java.util 패키지는 Java에서 가장 자주 사용하는 유틸리티 클래스들이 모여 있는 핵심 패키지다.
ArrayList<E>크기가 자동으로 조절되는 배열로 인덱스를 통해 순서대로 요소를 저장하고 접근하며, 중복 요소를 허용한다. 리스트의 크기가 가변적이므로, 배열처럼 고정된 크기를 미리 지정할 필요가 없다.
HashMap<K, V>Key-Value 형태로 데이터를 저장하는 컬렉션으로 키는 중복할 수 없다. 내부적으로 해시 테이블을 사용하므로 검색/삽입/삭제가 매우 빠르며, 순서를 보장하지 않는다.
HashSet<E>중복을 허용하지 않는 데이터 집합으로 순서를 보장하지 않으며, 내부적으로 HashMap 기반으로 동작한다. 요소가 존재하는지 빠르게 검사할 수 있어 중복 체크, 고유값 저장 등에 적합하다.
✏️
HashMap<K, V>vsHashSet<E>
항목 HashMap<K, V>HashSet<E>기본 구조 키(Key)와 값(Value) 쌍으로 저장 요소(Element)만 저장 중복 허용 키는 중복 불가, 값은 중복 가능 전체 요소 중복 불가 내부 구현 내부적으로 (키, 값)을 저장하는 Hash Table 사용 내부적으로 HashMap<E, Object>로 구현됨접근 방식 map.get(key)으로 값 조회set.contains(value)로 포함 여부 확인주요 사용 목적 항목별 정보를 빠르게 조회하거나 매핑할 때 중복 제거, 고유한 데이터 저장에 최적화
Collections컬렉션 (List, Set, Map, etc.)을 조작하기 위한 정적 (static) 유틸리티 메서드를 제공한다.
sort(List): 리스트 오름차순 정렬reverse(List): 리스트의 요소 순서 반전shuffle(List): 리스트 요소 무작위 섞기max(Collection)/min(Collection): 최댓값/최솟값 반환frequency(Collection, Object): 특정 요소의 등장 횟수 계산replaceAll(List, oldVal, newVal): 특정 값 일괄 치환Arrays배열 관련 기능을 지원하는 정적 메서드 유틸 클래스이다. 배열은 Java의 기본 데이터 구조이지만, 기능이 제한적이므로 Array 클래스를 통해 다양한 조작이 가능하다.
sort(array): 배열 정렬 (기본형, 참조형 모두 가능)toString(array): 배열을 문자열로 변환하여 출력 가능copyOf(array, length): 배열 복사 (길이 지정 가능)equals(array1, array2): 배열 간 값 비교fill(array, value): 배열을 동일한 값으로 초기화binarySearch(array, key): 정렬된 배열에서 이진 탐색 수행Scanner입력 스트림으로부터 데이터를 읽어들이기 위한 클래스이다. 키보드, 파일, 문자열 등 다양한 소스로부터 입력을 처리할 수 있다.
❗️
nextInt()는 정수만 읽고\n는 입력 버퍼에 남겨둔다. 따라서nextInt()후에nextLine()을 바로 호출하면 남아 있던 개행 문자를 그대로 읽어들여 빈 문자열이 들어간다. 이를 방지하기 위해nextLine()을 사용하여 입력을 받기 전에scanner.nextLine()를 한 번 더 호출해서 버퍼를 비워주어야 한다.
Optional<T>Optional은 null로 인해 발생할 수 있는 예외 (NullPointerException)를 방지하기 위한 컨테이너 클래스이다. 값이 있을 수도 있고 없을 수도 있는 경우에 명시적으로 null 여부를 표현하기 위해 사용한다.
Optional.of(value): 절대 null이 아닌 값을 감싼다. (null이면 예외가 발생한다.)Optional.ofNullable(value): null일 수도 있는 값을 감싼다.Optional.empty(): 비어 있는 Optional을 생성한다.isPresent(): 값이 존재하는지 여부 (deprecated 경향)ifPresent(Consumer): 값이 존재하면 처리 수행get(): 값 반환 (존재하지 않으면 예외 발생 - 권장 X)orElse(value): 값이 없으면 기본값 반환orElseGet(Supplier): 값이 없으면 지연된 로직으로 값 생성orElseThrow(): 값이 없으면 예외 발생Properties설정 정보나 환경변수 같은 문자열 기반의 Key-Value 데이터를 저장하고 읽는 데 최적화된 클래스다. 키와 값 모두 문자열 형태로 저장되며 .properties 파일을 로드하거나 저장할 수 있다.