이진트리를 기반으로 하는 set 컬렉션으로, 효율적인 탐색이 가능하다.
TreeSet<E> treeSet = new TreeSet<>();
| 메서드 | 역할 |
|---|---|
first() | 제일 낮은 객체를 리턴 |
last() | 제일 높은 객체를 리턴 |
lower(E e) | 객체 e 의 바로 아래 객체를 리턴 |
higher(E e) | 객체 e 의 바로 위 객체를 리턴 |
floor(E e) | 객체 e 와 동등한 객체 리턴, 없으면 바로 아래 객체를 리턴 |
ceiling(E e) | 객체 e 와 동등한 객체 리턴, 없으면 바로 위 객체를 리턴 |
pollFirst() | 제일 낮은 객체를 제거하고 리턴 |
pollLast() | 제일 높은 객체를 제거하고 리턴 |
descendingIterator() | 내림차순으로 정렬된 Iterator 를 리턴 |
descendingSet() | 내림차순으로 정렬된 NavigableSet 를 리턴 |
headSet(E e, 같은거포함여부) | e 보다 낮은 객체들을 NavigableSet 로 리턴 |
tailSet(E e, 같은거포함여부) | e 보다 높은 객체들을 NavigableSet 로 리턴 |
subSet(E e, 포함, F f, 포함) | e 부터 f 까지 범위의 객체들을 NavigableSet 로 리턴 |
// set을 내림차순으로 정렬해서 순회
NavigableSet<Integer> orderedSet = set.descendingSet();
for(Integer e : orderedSet) {
...
}
// set 에서 80보다 높은 요소들을 순회
NavigableSet<Integer> over80 = set.headSet(80, true);
for(Integer e : over80) {
...
}
// set 에서 70~80 사이인 요소들을 순회
NavigableSet<Integer> from70to80 = set.subSet(70, true, 80, true);
for(Integer e : from70to80) {
...
}
이진트리를 기반으로 하는 Map 컬렉션으로, 효율적인 탐색이 가능하다. 트리에 키:값 Entry 가 저장되며, 키를 기준으로 정렬된다.
| 메서드 | 역할 |
|---|---|
firstEntry() | 제일 낮은 Entry 를 리턴 |
lastEntry() | 제일 높은 Entry 를 리턴 |
lowerEntry(K key) | key 의 바로 아래 Entry 를 리턴 |
higherEntry(K key) | key 의 바로 위 Entry 를 리턴 |
floorEntry(K key) | 동등한 Entry 리턴, 없으면 바로 아래 Entry 리턴 |
ceilEntry(K key) | 동등한 Entry 리턴, 없으면 바로 위 Entry 리턴 |
pollFirstEntry() | 제일 낮은 Entry 를 제거하고 리턴 |
pollLast() | 제일 높은 Entry 를 제거하고 리턴 |
descendingKeySet() | 내림차순으로 정렬된 키의 NavigableSet 를 리턴 |
descendingMap() | 내림차순으로 정렬된 Entry 의 NavigableMap 를 리턴 |
headMap(K key, 같은거포함여부) | key 보다 낮은 Entry 들을 NavigableMap 로 리턴 |
tailMap(K key, 같은거포함여부) | key 보다 높은 Entry 들을 NavigableMap 로 리턴 |
subMap(K k1, 포함, K k2, 포함) | 키가 k1 ~ k2 사이인 Entry 들을 NavigableMap 로 리턴 |
Entry 의 타입은 Entry<K,V> 이고,
NavigableMap 의 타입은 NavigableMap<K,V> 이다.
/* 키를 기준으로 엔트리를 내림차순으로 정렬해서 순회 */
// 1. 내림차순 NavigableMap 얻기
NavigableMap<String,Integer> orderedMap = map.descendingMap();
// 2. Set 으로 변경하기 (entrySet)
Set<Entry<String,Integer>> orderedEntrySet = orderedMap.entrySet();
// 3. entrySet 순회하기
for(Entry<String,Integer> e : orderedEntrySet) {
...
}
/* 키 값이 A~C 사이인 엔트리를 순회 */
NavigableMap<String,Integer> AtoC = set.subMap("A", true, "C", true);
Set<Entry<String,Integer>> AtoCEntrySet = AtoC.entrySet();
for(Entry<String,Integer> e : AtoCEntrySet) {
...
}
for(Entry<K,V> entry : entrySet) {
K key = entry.getKey();
V value = entry.getValue();
}