본문 바로가기
자료구조

[자료구조] TreeSet

by eddypark 2023. 11. 7.

- 데이터의 순서는 자연적인 순서(오름차순)대로 유지가 된다.

- 이진 탐색 트리(Binary Search Tree) 구조로 되어있다.

- 이진 탐색 트리 중에서도 레드-블랙 트리(Red-Black Tree)로 구현되어 있다.


생성 및 선언

import java.util.Collections;
import java.util.TreeSet;

public class TreeSetDemo{
    public static void main(String[] args) {
        TreeSet<Interger> set1 = new TreeSet<Integer>(); // TreeSet 생성
        TreeSet<Interger> set2 = new TreeSet<>(); // new에서 타입 파라미터 생략가능
        TreeSet<Interger> set3 = new TreeSet<Integer>(set1); // set1의 모든 값을 가진 TreeSet
        TreeSet<Interger> set4 = new TreeSet<Integer>(Arrays.asList(1, 2, 3)); // 초기값 지정
    }
}

- Collections.reverseOrder()를 사용하면 내림차 순 정렬로 바꿀 수 있다.

- Collections를 사용하기 위해서는 import를 해야 한다.


값 추가

import java.util.TreeSet;

public class TreeSetDemo{
    public static void main(String[] args) {
    	// TreeSet 선언
        TreeSet<Interger> ts = new TreeSet<>();
        
        // 값 추가
        ts.add(5);
        ts.add(4);
        ts.add(3);
        ts.add(2);
        ts.add(1);
        
        System.out.println(ts); // 결과 출력
    }
}

 

- 입력되는 값이 TreeSet 내부에 존재하지 않는다면 그 값을 추가한 뒤 true를 반환하고 존재한다면 false를 반환한다.


값 삭제

import java.util.TreeSet;

public class TreeSetDemo{
    public static void main(String[] args) {
    	// TreeSet 선언
        TreeSet<Interger> ts = new TreeSet<>();
        
        // 값 추가
        ts.add(5);
        ts.add(4);
        ts.add(3);
        ts.add(2);
        ts.add(1);
        
        System.out.println(ts); // 결과 출력
        
        ts.remove(4); // 4 삭제
        System.out.println(ts); // 결과 출력
        
        ts.pollFirst(); // 첫 데이터 삭제
        System.out.println(ts); // 결과 출력
        
        ts.pollLast(); // 마지막 데이터 삭제
        System.out.println(ts); // 결과 출력
        
        ts.clear(); // 전체 삭제
        System.out.println(ts); // 결과 출력
    }
}


크기 구하기

import java.util.TreeSet;

public class TreeSetDemo{
    public static void main(String[] args) {
    	// TreeSet 선언
        TreeSet<Interger> ts = new TreeSet<>();
        
        // 값 추가
        ts.add(5);
        ts.add(4);
        ts.add(3);
        ts.add(2);
        ts.add(1);
        
        System.out.println(ts); // 결과 출력
        System.out.println("TreeSet의 크기는 " + ts.size());
    }
}


값 출력

import java.util.TreeSet;
import java.util.Iterator;

public class TreeSetDemo{
    public static void main(String[] args) {
    	// TreeSet 선언
        TreeSet<Interger> ts = new TreeSet<>();
        
        // 값 추가
        ts.add(5);
        ts.add(4);
        ts.add(3);
        ts.add(2);
        ts.add(1);
        
        /* 향상된 for문을 사용하여 출력 */
        for(Integer str : ts)
            System.out.print(str + " ");
            
        System.out.println();
        
        // Iterator를 사용하여 출력 
        Iterator iter = ts.iterator();
        while(iter.hasNext())
            System.out.println(iter.next() + " ");
    }
}

'자료구조' 카테고리의 다른 글

[자료구조] HashMap  (0) 2023.11.09
[자료구조] HashTable  (0) 2023.11.09
[자료구조] Hash Set  (0) 2023.11.07
[자료구조] Vector  (0) 2023.11.06
[자료구조] Stack  (0) 2023.11.06