Java

부트캠프/우아한테크코스 6기

[Java] Java 반복 작업 수행 시, For-Loop와 Stream 사이 성능 비교

미션 도중 생긴 고민 💭 public Cars(List carNames) { ArrayList cars = new ArrayList(); for (String carName : carNames) { cars.add(new Car(carName)); } this.cars = cars; } Cars 객체를 생성할 때, List형태의 carNames를 입력받은 뒤, For-Loop 문을 통해 cars 필드를 초기화 해주었다. 하지만 For-Loop문을 생성자 로직에 적용하니 개인적으로 생성자 로직이 지저분하다는 생각이 들었다. 때문에 Stream을 사용하여 짧고 가독성있는 코드로 리팩토링하여 사용하고자 하였다. 그리고 이때 머릿속에 한가지 고민이 생겼다 🤔 미션의 요구사항에 자동차의 수는 제한이 없는데, 그럼..

부트캠프/우아한테크코스 6기

[Java] 생성자 체이닝(Constructor Chaining) 기법

생성자 체이닝(Constructor Chaining)이란? 생성자 체이닝은 생성자가 2개 이상일 경우, 전체 인스턴스 필드의 값 초기화를 담당하는 하나의 주 생성자를 두고 이 외의 부 생성자들은, 자신보다 상위의 부 생성자를 호출하는 체이닝 구조를 거쳐 최종적으로 주 생성자를 호출하여 객체를 생성하도록 만드는 방식이다. 즉, 실제 객체 초기화를 담당하는 주 생성자 이 외에는 상위 생성자를 호출해나가는 구조인 것이다. 적용 기존 코드 public Player(final String name) { super(Cards.createEmpty()); this.name = new Name(name); } public Player(final String name, final Cards cards) { super(c..

부트캠프/우아한테크코스 6기

[Java] 자바에서 라인을 ‘잘’ 개행하는 방법

자바에서의 개행 📃 본인은 보통 자바의 문자열 내에서 라인을 개행할 때 아래와 같이 개행하곤 했다. System.out.println("안녕하세요\\n"); 그러던 중, 조원과의 대화를 통해 놓치고 있던 부분에 대한 하나의 인사이트를 얻게 되었다. 그건 바로 개행 문자는 OS별로 상이하다는 점이다. 이전에 대학 강의에서 배웠던 것이 어렴풋이 기억이 나긴 하지만 정확히는 기억이 나질 않아 찾아보았고 그 결과 개행 문자가 3종류나 존재하고 있으며, OS 별로 상이한 경우도 존재함을 알 수 있었다. 개행문자 종류 CRLF(\r\n), CR(\r), LF(\n) Windows 운영체제: CRLF(\r\n) Unix 계열: LF(\n) Mac: CR(\r) 이후 Macintosh: LF(\n) 🧐 그럼 \n 없이..

부트캠프/우아한테크코스 6기

[우테코] LinkedHashMap을 통한 기초 캐싱

🧐 캐싱 방식 사용 시에 메모리 사용량을 최소화하는 방법은 무엇일까? @Test @DisplayName("메모리 사용량을 최소화하는 방법은 무엇일까?") void 메모리_사용량을_최소화하는_방법은_무엇일까() { // TODO: 메모리 사용량을 최소화하는 방법을 고민 후 개선해보세요. record Position(int value) { private static final Map CACHE = new ConcurrentHashMap(); public static Position startingPoint() { return valueOf(0); } public static Position valueOf(final int value) { return CACHE.computeIfAbsent(value, Pos..

PgmJUN
'Java' 태그의 글 목록