Java SortedSet 마스터하기: TreeSet과 주요 메서드 실전 가이드
Java SortedSet 마스터하기: TreeSet과 주요 메서드 실전 가이드
Java의 SortedSet 인터페이스가 데이터를 정렬하여 관리하는 방식, 제공하는 강력한 메서드들, 그리고 TreeSet을 활용한 실전 구현 방법을 알아봅니다.
SortedSet 인터페이스는 Java Collections Framework의 일부로, 요소를 오름차순으로 유지하는 집합을 나타냅니다. 일반 Set과 달리 SortedSet은 요소가 자연 순서(Comparable 구현 타입의 경우) 또는 생성 시 제공된 커스텀 Comparator에 따라 정렬됨을 보장합니다.
Set 인터페이스를 확장하여 표준 연산들을 모두 상속받으면서, 순서가 있는 컬렉션에서 매우 유용한 범위 쿼리 메서드들을 추가로 제공합니다.
SortedSet을 구현하는 클래스
JDK에서 SortedSet의 유일한 구체적 구현체는 TreeSet입니다. 내부적으로 레드-블랙 트리를 사용하여 대부분의 연산에서 O(log n) 시간 복잡도를 보장합니다.
SortedSet 사용 방법
SortedSet을 사용하려면 java.util.SortedSet을 임포트하고 TreeSet 인스턴스를 생성하면 됩니다:
import java.util.SortedSet;
import java.util.TreeSet;
SortedSet<String> animals = new TreeSet<>();
기본적으로 집합은 요소를 자연 순서로 정렬합니다. 커스텀 정렬이 필요하다면 생성 시 Comparator를 제공하면 됩니다.
SortedSet의 핵심 메서드
- comparator() – 정렬에 사용된
Comparator를 반환하거나, 자연 순서가 적용된 경우 null을 반환합니다.
- first() – 가장 낮은 요소를 조회합니다.
- last() – 가장 높은 요소를 조회합니다.
- headSet(E element) – 지정된 요소보다 엄격하게 작은 모든 요소를 반환합니다.
- tailSet(E element) – 지정된 요소보다 크거나 같은 모든 요소를 반환합니다.
- subSet(E fromElement, E toElement) –
fromElement(포함)부터 toElement(제외)까지의 범위 요소를 반환합니다.
이 메서드들은 Set에서 상속받은 표준 컬렉션 연산(add, remove, contains 등)과 함께 사용할 수 있습니다.
TreeSet 실전 예제
import java.util.SortedSet;
import java.util.TreeSet;
public class Main {
public static void main(String[] args) {
// 정수 SortedSet 생성
SortedSet<Integer> numbers = new TreeSet<>();
// 요소 추가
numbers.add(1);
numbers.add(2);
numbers.add(3);
numbers.add(4);
System.out.println("SortedSet: " + numbers);
// 경계 요소 조회
System.out.println("First Number: " + numbers.first());
System.out.println("Last Number: " + numbers.last());
// 요소 제거
boolean removed = numbers.remove(2);
System.out.println("Is the number 2 removed? " + removed);
}
}
실행 결과
SortedSet: [1, 2, 3, 4]
First Number: 1
Last Number: 4
Is the number 2 removed? true
더 자세한 내용은 공식 Java 문서를 참고하세요: TreeSet API.
SortedSet과 TreeSet에 대한 확실한 이해를 바탕으로, 이제 Java 애플리케이션에서 효율적이고 신뢰할 수 있는 정렬 컬렉션을 구현할 수 있습니다.