컬렉션 프레임워크 (Collection Framework) - 4.5. TreeSet

CJI0524·2024년 7월 11일

Java/Collection Framework

목록 보기
16/26

1. TreeSet

TreeSet 클래스는 NavigableSet 인터페이스를 구현하였으며 이진 검색트리 (Binary Search Tree)라는 자료구조의 형태로 데이터를 저장하는 컬렉션이다. 이진 검색 트리는 정렬, 검색, 범위 검색에 높은 성능을 보이는 자료구조로 TreeSet 클래스는 이진 검색 트리의 성능을 높인 레드-블랙 트리(Red-Black Tree)로 구현되어있다.

이진 트리(binary Tree)는 링크드리스트처럼 각 노드에 최대 2개의 노드를 연결할 수 있으며 루트(root)라고 불리는 하나의 노드에서부터 시작해 계속 확장해나가는게 가능하다.

2. TreeSet 인터페이스에 정의된 메서드 목록

2.1. 삽입 / 탐색 / 삭제 메서드

반환타입이 boolean인 메서드들은 작업에 성공하거나 사실이면 true, 아니면 false를 반환한다.

삽입

메서드기능
boolean add(Object o)
boolean addAll(Collection c)
지정된 객체(o) 또는 Collection(c)의 객체들을 TreeSet에 추가.

탐색

메서드기능
boolean contains(Object o)
boolean containsAll(Collection c)
지정된 객체(o) 또는 Collection(c)의 객체들이 포함되어 있는지 확인.

삭제

메서드기능
boolean remove(Object o)
boolean removeAll(Collection c)
지정된 객체(o) 또는 Collection(c)의 객체들을 삭제.
boolean retainAll(Collection c)지정된 Collection에 포함된 객체만을 남기고, 다른 객체들은 TreeSet에서 삭제
집합의 교집합 개념과 유사함.
void clear()TreeSet의 모든 객체를 삭제

2.2. SortedSet에서 추가적으로 활용하는 메서드

메서드기능
Object first()정렬된 순서에서 첫 번째 객체를 반환
Object last()정렬된 순서에서 마지막 객체를 반환
SortedSet headSet(Object toElement)지정된 객체보다 작은 값의 객체들을 반환
SortedSet tailSet(Object fromElement)지정된 객체보다 큰 값의 객체들을 반환
SortedSet subSet(Object fromElement, Object toElement)범위검색(fromElement와 toElement사이)의 결과를 반환

2.3. NavigableSet에서 추가적으로 활용하는 메서드

탐색

메서드기능
Object lower(Object e)지정된 객체보다 작은 값을 가진 객체중 제일 가까운 값의 객체를 반환
만약 그런 요소가 없으면 null을 반환
Object higher(Object e)지정된 객체보다 큰 값을 가진 객체중 제일 가까운 값의 객체를 반환
만약 그런 요소가 없으면 null을 반환
Object floor(Object e)지정된 요소보다 작거나 같은 값을 가진 객체중 제일 가까운 값의 객체를 반환
만약 그런 요소가 없으면 null을 반환
Object ceiling(Object e)지정된 요소보다 크거나 같은 값을 가진 객체중 제일 가까운 값의 객체를 반환
만약 그런 요소가 없으면 null을 반환

부분집합 반환

메서드기능
NavigableSet subSet(Object fromElement, boolean fromInclusive, Object toElement, boolean toInclusive)지정된 범위의 요소를 포함하는 부분 집합을 반환
fromInclusive와 toInclusive를 사용하여 경계 요소의 포함 여부를 지정 가능
NavigableSet headSet(Object toElement, boolean inclusive)지정된 요소보다 작은 요소를 포함하는 부분 집합을 반환
inclusive를 사용하여 경계 요소의 포함 여부를 지정 가능
NavigableSet tailSet(Object fromElement, boolean inclusive)지정된 요소보다 큰 요소를 포함하는 부분 집합을 반환
inclusive를 사용하여 경계 요소의 포함 여부를 지정 가능

삭제

메서드기능
Object pollFirst()첫 번째 (가장 낮은) 요소를 제거하고 반환
만약 집합이 비어 있으면 null을 반환
Object pollLast()마지막 (가장 높은) 요소를 제거하고 반환
만약 집합이 비어 있으면 null을 반환

2.4. 추가 핵심 기능

Object 메서드

메서드기능
boolean equals(Object o)동일한 TreeSet인지 확인
int hashCode()TreeSet의 해시 코드를 반환
Object clone()TreeSet의 얕은 복사본을 생성해서 반환

컬렉션에 저장된 요소 접근

메서드기능
Iterator iterator()해당 TreeSet의 iterator를 얻어서 반환
Iterator descendingIterator()요소들을 역순으로 반복하는 반복자를 반환
Spliterator spliterator()TreeSet에 저장된 요소들을 분할할 수 있는 Spliterator 객체를 반환

컬렉션 상태 체크 / 변경

메서드기능
boolean isEmpty()TreeSet이 비어있는지 확인
int size()TreeSet에 저장된 객체의 개수를 반환
Comparator comparator()TreeSet에 사용되는 Comparator를 반환. 자연 순서에 따라 정렬된 경우 null을 반환
NavigableSet descendingSet()요소들을 역순으로 정렬한 NavigableSet을 반환

2.5. 기타

메서드기능
Object[] toArray()TreeSet에 저장된 객체를 객체배열(Object[])로 반환
Object[] toArray(Object[] a)지정된 배열에 TreeSet의 객체를 저장해서 반환

3. 해당 게시글 작성에 참고한 글 목록

자바의 정석 3판 (저자 : 남궁성)
Java Collections Framework Video Tutorial
오라클 Java 문서

profile
개발돌이

0개의 댓글