[Java] TreeSet
TreeSet, java.util.TreeSet, Java TreeSet, 트리셋, 정렬 셋
정의
java.util.TreeSet<E> 는 TreeMap 을 백킹으로 사용하는 정렬된 Set. NavigableSet 인터페이스를 구현해 정렬 기반 연산 (floor, ceiling, subSet 등) 을 제공.
원소는 Comparable (자연 순서) 또는 생성자에 전달한 Comparator 로 정렬.
핵심 메서드 (NavigableSet)
TreeSet<Integer> ts = new TreeSet<>(List.of(10, 20, 30));
ts.first(); // 10
ts.last(); // 30
ts.floor(15); // 10
ts.ceiling(15); // 20
ts.higher(20); // 30
ts.lower(20); // 10
ts.subSet(10, 30); // [10, 30)
ts.headSet(20); // < 20
ts.tailSet(20); // >= 20
ts.descendingSet(); // 역순 view
복잡도
TreeMap 의 성질.
| 작업 | 시간 |
|---|---|
add, remove, contains | O(log n) |
first, last, floor, ceiling | O(log n) |
| 순회 | O(n) (정렬 순서) |
사용 사례
- 정렬된 unique 값 (예: 시험 점수, 가격)
- range 쿼리 (예: 특정 점수 구간 학생 수)
- K-번째 큰/작은 값 찾기 (combined with subSet)
- 할인율 구간 lookup
null 비허용
TreeMap 처럼 null 원소는 NPE.
참고
이 글의 용어 (6개)
- [Java] Collectionjava
- 정의 는 그룹으로 묶인 객체들을 표현하는 최상위 인터페이스. JCF (Java Collections Framework) 의 입구이자, / / / 모두 이를 확장한다. 자체는 직접…
- [Java] HashSetjava
- 정의 는 을 백킹으로 사용하는 구현. 내부적으로 모든 원소를 HashMap 의 key 로 저장하고, value 는 dummy 상수 . 평균 O(1) 의 add/remove/con…
- [Java] Iterablejava
- 정의 는 루프로 순회 가능한 모든 타입의 최상위 인터페이스. 단 하나의 추상 메서드, 를 정의한다. 인터페이스가 을 extends 하므로 , , , 등 모든 컬렉션이 자동으로 대…
- [Java] Objectjava
- 정의 는 Java 의 모든 클래스의 최상위 부모 (root) 클래스. 가 명시되지 않은 클래스는 컴파일러가 자동으로 를 붙인다. 인터페이스는 클래스가 아니라 를 직접 상속하지는 …
- [Java] TreeMapjava
- 정의 는 Red-Black Tree 기반의 정렬된 . (확장 인터페이스) 을 구현해 범위 쿼리, floor/ceiling, sub-map 같은 정렬 기반 연산을 제공한다. key…
- 집합과 맵 (Set and Map)algorithm
- 정의 집합 (Set) 은 고유한 원소들의 모임을 나타내는 추상 자료구조로, 멤버십 검사, 삽입, 삭제를 지원한다. 맵 (Map, Dictionary) 은 키-값 쌍을 저장하며, …
💬 댓글