[JAVA] TreeSet
컬렉션 프레임워크는 검색 기능을 강화시킨 TreeSet을 제공한다.
TreeSet
TreeSet은 이진 트리(binary tree)를 기반으로 한 Set 컬렉션이다. 이진 트리는 여러 개의 노드가 트리 형태로 연결된 구조로, 루트 노드라고 불리는 하나의 노드에서 시작해 각 노드에 최대 2개의 노드를 연결할 수 있는 구조를 가지고 있다.
맨 상단에 있는 것은 루트 노드, 상대적으로 상단에 있는 노드가 부모 노드이고 하단에 있는 노드가 자식 노드이다.
TreeSet에 객체를 저장하면 부모 노드의 객체와 비교하여 낮은 것은 왼쪽 자식 노드에, 높은 것은 오른쪽 자식 노드에 저장한다.
TreeSet 컬렉션은 다음과 같이 생성할 수 있다.
TreeSet<E> treeSet = new TreeSet<E>;
Set 타입 변수에 대입하지 않고 TreeSet 타입으로 대입해야 하는 이유는 검색 관련 메소드가 TreeSet에만 정의되어 있기 때문이다. 다음은 TreeSet의 검색 관련 메소드들이다
리턴 타입 | 메소드 | 설명 |
E | first() | 제일 낮은 객체를 리턴 |
E | last() | 제일 높은 객체를 리턴 |
E | lower(E e) | 주어진 객체보다 바로 아래 객체를 리턴 |
E | higher(E e) | 주어진 객체보다 바로 위 객체를 리턴 |
더 많은 메소드들은 JAVA API에서 확인할 수 있다.
https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/TreeSet.html
TreeSet (Java SE 21 & JDK 21)
Type Parameters: E - the type of elements maintained by this set All Implemented Interfaces: Serializable, Cloneable, Iterable , Collection , NavigableSet , SequencedCollection , SequencedSet , Set , SortedSet A NavigableSet implementation based on a TreeM
docs.oracle.com