Java TreeSet 이진 트리 구조
결과
결과
코드
TreeSet : 이진 트리 구조를 갖는다.
(부모 노드보다 작으면 왼쪽, 크면 오른쪽 자식 노드의 위치)
ㄴ 따라서 [왼쪽 자식 노드 -> 부모 노드 -> 오른쪽 자식 노드 ] 순으로 값을 읽기만 하여도 오름차순으로 정렬된 값들을 얻어올 수 있게 된다.
이와 같은 구조 때문에 검색을 빠르게 할 수 있다.
ㄴ TreeSet은 Set이 들어가 있어 알수 있듯이 이진 트리 구조의 Set 컬렉션으로 중복된 값을 가질 수 없다.
메소드
삽입, 삭제 등 : Set 컬렉션으로 동일한 메소드를 사용한다.
링크
[JAVA/심화] - Java HashSet - 집합 삽입, 삭제, 탐색
E first() : 가장 작은 값
- 가장 작은 값, 즉 이진트리에서 가장 왼쪽의 값이다.
E last() : 가장 큰 값
- 가장 큰 값, 즉 이진트리에서 가장 오른쪽 값이다.
E floor(E e) : 인수보다 이하의 객체(값)
- 인수의 해당하는 값이 없다면 그보다 이하의 값들 중 가장 가까운 값을 리턴한다.
- 미만의 값을 구하고자 한다면 lower() 메소드를 사용하면 된다.
E ceiling(E e) : 인수보다 이상의 객체(값)
- 인수의 해당하는 값이 없다면 그보다 이상의 값들 중 가장 가까운 값을 리턴한다.
- 단, 존재하지 않을 경우 null을 리턴한다.
- 초과의 값을 구하고자 한다면 higher() 메소드를 사용하면 된다.
E pollFirst() / E pollLast = First 값 제거 / Last 값 제거
- 해당하는 값을 리턴해준 후 제거한다.
정렬
- 오름차순 : 이진 트리 구조상 이미 정렬이 되어져 있으므로 iterator() 메소드로 가져오면 오름차순으로 정렬되어 있다.
- 내림차순 : descendingIterator() 메소드를 사용하여서 Iterator<E>의 가져오면 내림차순으로 정렬된다.
범위 검색
NavigableSet<E> headSet(E e, boolean b) : 인수 값보다 작은 값들 검색
- 위 예시에서는 5를 주어서 5이하의 값들을 검색하였다.
- 2번 째 인자인 b가
true일 경우 e 이하를 검색
false일 경우 e 미만을 검색
한다.
NavigableSet<E> tailSet(E e, boolean b) : 인수 값보다 큰 값들 검색
- 위 예시에서는 5와, false를 주어서 5를 초과하는 값들을 검색하였다.
- 2번 째 인자인 b가
true일 경우 e 이상을 검색
false일 경우 e 초과를 검색
한다.
NavigableSet<E> subSet(E start, boolean b, E end, boolean b2)
- 시작 값과 끝 값을 인수로 주어 그 사이 범위의 값들을 리턴한다.
- 2, 4번 째 인자는 동일하게 true면 해당값도 포함이며 false면 미포함이다.
'JAVA > 심화' 카테고리의 다른 글
Java Set , ArrayList 내림차순 오름차순 정렬 (0) | 2020.04.14 |
---|---|
Java Key, Value - HashMap, Hashtable (0) | 2020.04.14 |
Java Queue(큐) 컬렉션 사용 (0) | 2020.04.10 |
Java Stack(스택) 컬렉션 사용 (0) | 2020.04.10 |
Java HashSet 합집합, 차집합, 교집합, 부분집합 (0) | 2020.04.09 |