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가 다음 가리킬 대상이 있다면 한 칸씩 출력하는 것을 반복한다.