본문 바로가기
Java

자바 컬렉션 (2) – 핵심 인터페이스

by gentle-tiger 2025. 7. 2.

 

프로젝트 중 느낀 자바 기초의 부족함을 보완하고자 핵심 주제를 순차적으로 복습할 예정입니다.
자바 코어 → 자바 스레드 → 자바 OOP → 자바의 예외 → 자바의 컬렉션 → 최대 절전 모드 순으로 정리할 예정입니다. 

 

자바 컬렉션 - 핵심 인터페이스

  1. Collection 인터페이스에 대해 설명하시오.
  2. List 인터페이스에 대해 설명하시오.
  3. Set 인터페이스에 대해 설명하시오.
  4. SortedSet 인터페이스에 대해 설명하세요.

 

 

Collection 인터페이스에 대해 설명하시오.

 Collection 인터페이스는 add, remove, size, iterator 등 최소 연산만을 정의하여 모든 컬렉션의 공통 계약을 묶습니다. 이를 통해 알고리즘(Collection.sort)이 구현체를 몰라도 동작하도록 보장하고 있습니다. 

 

List 인터페이스에 대해 설명하시오.

List 인터페이스는 요소 순서가 유지하고, 인덱스 기반 랜덤 접근을 허용하며, 중복 저장도 가능합니다.추가 및 삭제 시 위치 지정이 가능해 배열(ArrayList), 연결리스트(LinkedList) 구현체 모두 적합하게 추상화됩니다.

 

Set 인터페이스에 대해 설명하시오.

Set 인터페이스는 수학젹 집합 개념을 따르메 중복을 허용하지 않습니다. 동등성 판단은 equals나 hashCode 계약에 의존하고, 구현체에 따라 정렬(TreeSet), 해시(HashSet), 삽입 순서 유지(LinkedHashSet) 등을 지원하고 있습니다. 

 

SortedSet 인터페이스에 대해 설명하세요.

SortedSet은 모든 요소가 자연 순서(Comparable) 또는 지정 Comparator에 따라 자동 정렬된 상태를 유지합니다. 이를 바탕으로 범위 검색·부분 뷰(headSet, tailSet)가 O(log N) 트리 연산으로 효율적으로 동작합니다. Java 6부터 도입된 NavigableSet 은 lower/ higher / floor / ceiling 메서드로 기준 값 x의 바로 앞·뒤 요소를 한 줄에 찾을 수 있게 되었습니다. 기존 SortedSet에서 뷰를 두 번 만들어야 했던 작업을 트리 탐색 한 번으로 처리할 수 있어, 데이터베이스 인덱스에서 직전·직후 레코드를 즉시 가져오는 패턴과 비슷한 편의성을 제공합니다. 

 

기준 값 x의 바로 직전·직후 요소를 찾는 두 방식

SortedSet<Integer> s = new TreeSet<>(List.of(10, 20, 30, 40, 50));
int x = 35;

/* SortedSet(두 번 탐색) */
Integer prev = s.headSet(x).isEmpty() ? null : s.headSet(x).last();
Integer next = s.tailSet(x).isEmpty() ? null : s.tailSet(x).first();

/* NavigableSet(한 번 탐색) */
NavigableSet<Integer> n = (NavigableSet<Integer>) s;
Integer prevN = n.lower(x);      // <  x 중 최대
Integer nextN = n.higher(x);     // >  x 중 최소