[Java] Util 클래스

김선형·2025년 9월 6일

Java

목록 보기
7/27

java.util 패키지는 Java에서 가장 자주 사용하는 유틸리티 클래스들이 모여 있는 핵심 패키지다.

ArrayList<E>

크기가 자동으로 조절되는 배열로 인덱스를 통해 순서대로 요소를 저장하고 접근하며, 중복 요소를 허용한다. 리스트의 크기가 가변적이므로, 배열처럼 고정된 크기를 미리 지정할 필요가 없다.

HashMap<K, V>

Key-Value 형태로 데이터를 저장하는 컬렉션으로 키는 중복할 수 없다. 내부적으로 해시 테이블을 사용하므로 검색/삽입/삭제가 매우 빠르며, 순서를 보장하지 않는다.

HashSet<E>

중복을 허용하지 않는 데이터 집합으로 순서를 보장하지 않으며, 내부적으로 HashMap 기반으로 동작한다. 요소가 존재하는지 빠르게 검사할 수 있어 중복 체크, 고유값 저장 등에 적합하다.

✏️ HashMap<K, V> vs HashSet<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>

Optionalnull로 인해 발생할 수 있는 예외 (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 파일을 로드하거나 저장할 수 있다.

profile
선형의 비선형적 기록 🐜

0개의 댓글