얼렁뚱땅 자바이야기

[JAVA] TreeSet 사용하기

MOSTAR 2023. 3. 6. 15:50

TreeSet은 기존에 내가 알던 파이썬의 Set과 비슷한 역할이다.

1. 중복값은 자동으로 제거됨

2. 입력한대로 순서가 저장되지는 않음

 

다만, 다른 점이 있다면 TreeSet의 경우 이진탐색트리구조이다.

1. 자동으로 정렬이 된다.

(따라서, 추가와 삭제에는 시간이 더 걸린다는 단점있지만, 정렬과 검색에는 강점을 가진다)

 

그리고 Treeset이 그대로 출력이 가능하다

(배열의 경우, 메모리값을 가지므로 그냥 프린트하면 주소값이 나온다.

따라서 하나하나 가서 프린트 해주어야 하지만 얘는 필요 없다.)

 

import java.util.*;
import java.io.*;

public class Treeset {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		TreeSet<Integer> ts1 = new TreeSet<Integer>();
		
		ts1.add(5);
		ts1.add(92);
		ts1.add(1);
		ts1.add(72);
		ts1.add(3);
		
		System.out.println(ts1); //[1, 3, 5, 72, 92]
		System.out.println("가장 낮은 숫자는 ? "+ts1.first()); //가장 낮은 숫자는 ? 1
		System.out.println("가장 높은 숫자는 ? "+ts1.last()); //가장 높은 숫자는 ? 92
		System.out.println("5보다 큰 숫자는 ? "+ts1.headSet(5)); //5보다 큰 숫자는 ? [1, 3]
		System.out.println("5보다 작은 숫자는 ? "+ts1.tailSet(5)); //5보다 작은 숫자는 ? [5, 72, 92]
		
		System.out.println();
		
		TreeSet<String> ts2 = new TreeSet<String>();
		
		ts2.add("ming");
		ts2.add("best");
		ts2.add("is good");
		ts2.add("ming_pro");
		ts2.add("i want to eat sashimi");
		
		System.out.println(ts2);//[best, i want to eat sashimi, is good, ming, ming_pro]
		System.out.println("사전 순 가장 먼저 나오는 것은 ? "+ts2.first()); //사전 순 가장 먼저 나오는 것은 ? best
		System.out.println("사전 순 가장 나중에 나오는 것은 ? "+ts2.last());//사전 순 가장 나중에 나오는 것은 ? ming_pro
		System.out.println("ming_pro보다 뒤에 나오는 것은 ? "+ts2.tailSet("ming_pro")); //ming_pro보다 뒤에 나오는 것은 ? [ming_pro]
		System.out.println("ming_pro보다 앞에 나오는 것은 ? "+ts2.headSet("ming_pro")); // ming_pro보다 앞에 나오는 것은 ? [best, i want to eat sashimi, is good, ming]
		
		
		int [] test = {3,4,5};
		System.out.println(test);//[I@1963006a
	}

}