자바 컬렉션 내 가장 많이 사용하는 자료구조 중 ArrayList 와 HashMap 이 있다. 사용하면서도 용도를 제대로 이해하지 않고 사용하는 것 같아 성능 및 사용 사례에 대해 정리해보려한다. ArrayList 와 HashMap 1. ArrayList - 구조 : 내부적으로 데이터를 배열 형태로 저장하며 요소를 추가하거나 제거할 때 크기를 동적으로 조정한다. - 접근 방법 : 인덱스를 통해 접근. - 사용 사례 : 순서가 중요하거나 혹은 인덱스를 통한 빠른 접근이 필요할 때 사용한다. - 크기 조정을 해야하는 경우 내부적으로 배열을 재할당하고 기존 요소를 새 배열로 복사해야하기 때문에 많은 양의 데이터를 추가하거나 삭제하는 경우 성능 저하가 발생할 수 있다. 2. HashMap - 구조 : 키-값 쌍..
프로젝트 진행 중에 데이터를 생성한 시간과 업데이트한 시간에 대한 필드를 정의하며 타입에 대한 고민이 들었다. LocalDateTime 만을 고려하고 있다가 Instant 라는 타입을 처음 알았기 때문이다. 해서 그에 대해 정리를 해보려한다. LocalDateTime 과 Instant 이 둘은 자바 8부터 도입된 날짜와 시간을 표현하는 데에 사용된다. 1. LocalDateTime - 시간대 정보를 포함하지 않으며 단순히 연, 월, 일, 시 등의 지역 날짜와 시간을 나타낸다. - 로컬 서버의 날짜와 시간을 나타내며 그것이 어느 시간대에 속하는 지는 명시하지 않는다. - 날짜, 시간 등을 더하고 빼는 등의 연산이 간단하다. - 시간대에 민감하지 않고 지역적인 서비스에 적합하다. 2. Instant - UT..
이펙티브 자바 책을 읽으며 내 생각을 바탕으로 정리하며 이해하기 위함이다. 생성자와 정적 팩터리 메서드 1. 생성자 클라이언트가 클래스의 인스턴스를 얻는 전통적인 수단은 public 생성자이고, 예시는 아래와 같다. public class Car { private final String type; public Car(String type) { // ★ public 생성자 this.type = type; } @Override public String toString() { return "Car type: " + type; } public static void main(String[] args) { Car car = new Car("Sports"); System.out.println(car); // Car ..
Access Level 을 protected 로 설정하는데 왜 protected 로 설정하는지 protected 로 설정했을 때의 접근 영역이 어딘지 헷갈려 정리를 해보려한다. Access Level 의 필요성 접근 레벨을 가장 흔하게 적용하는 예는 아래와 같이 기본생성자를 만들 때이다. 보안상의 문제로 public 을 쓰지 않는다면 왜 private 을 사용하지 않는가에 대한 의문을 하지 못했던 것 같다. @NoArgsConstructor(access = AccessLevel.PROTECTED) // ★ 접근 레벨 설정 public class Member { .. } 우선, public 이 아닌 이유는 외부에서의 무분별한 생성을 막기위해서이고 private 이 아닌 이유는 JPA의 프록시 객체를 생성해..
jdk 17 의 기능 중 record 에 대한 내용이다. record 의 쓰임새 record 는 언제 쓰는 게 좋을까 ? record 는 데이터를 저장하기위한 클래스로 생성된 인스턴스의 값을 변경할 수 없다. 그렇기 때문에, 서로 다른 계층 간 불변 데이터를 전송할 때 유용하게 쓰일 수 있으며 기본 메서드를 자동으로 생성해주어 편리하게 사용할 수 있다. 또한, 공식문서에서 확인할 수 있듯이 equals(), hashCode(), toString() 를 제공한다. record 사용방법 1. DTO with record 사용자의 입력을 저장하여 데이터를 전달하는 MemberDTO 가 있다고 하자. MemberDTO 가 사용자의 이메일, 비밀번호, 이름 필드를 가진다고 했을 때 record 로 생성한 예가 아..