본문으로 건너뛰기
김신건의 로그

[Java] TreeSet

· 수정 · 📖 약 1분 · 170자/단어 #java #collection #set #tree #red-black-tree #sorted
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, containsO(log n)
first, last, floor, ceilingO(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) 은 키-값 쌍을 저장하며, …

💬 댓글

사이트 검색 / 명령어

검색

스크롤 = 확대/축소 · 드래그 = 이동 · 0 = 원래 크기 · ESC = 닫기