Language/Java
[Java] TreeSet
Anoi
2023. 1. 29. 16:46
TreeSet이란?
Set 컬렉션 중 하나로 SortedSet 인터페이스이다.
Set이기 때문에 중복값을 허용하지 않고 입출력 순서가 보장되지 않는다는 성질을 갖는다.
HashSet과는 자동정렬이 된다는 차이점이 있다.
-> HashSet보다 속도가 느리다.
사용 예시
원소추가하기 - add()
1
2
3
4
5
6
7
8
|
Set<Integer> answer = new TreeSet<>();
answer.add(5);
answer.add(5); answer.add(2);
answer.add(3);
answer.add(1);
answer.add(4); System.out.println(answer);
|
cs |

정수형 TreeSet인 answer을 만들었다.
add를 이용하여 원소를 추가하였고
5를 두 번, 크기 상관없이 저장하였다.
중복되는 원소인 5는 한 번만 들어갔고 작은 순서에서 큰 순서대로 정렬되어 저장되어 있다.
내림차순 정렬하기 - Collections.reverseOrder()
1
2
3
4
5
6
7
8
9
|
Set<Integer> answer = new TreeSet<>(Collections.reverseOrder());
answer.add(5);
answer.add(5);
answer.add(2);
answer.add(3);
answer.add(1);
answer.add(4);
System.out.println(answer);
|
cs |

원소 삭제하기 - remove(), clear()
1
2
3
4
|
System.out.println(answer);
answer.remove(3); System.out.println(answer);
answer.clear(); System.out.println(answer);
|
cs |

remove()로 지우고 싶은 원소를 선택해서 지우고
clear()로 배열에 있는 모든 원소를 지울 수 있다.
원소 하나씩 꺼내기 - iterator()
1
2
3
4
5
6
7
8
9
10
11
12
13
|
Set<Integer> answer = new TreeSet<>(Collections.reverseOrder());
answer.add(5);
answer.add(5);
answer.add(2);
answer.add(3);
answer.add(1);
answer.add(4);
Iterator<Integer> iterator = answer.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
|
cs |

iterator 클래스를 이용한다.
while문으로 itrator가 다음 가리킬 대상이 있다면 한 칸씩 출력하는 것을 반복한다.