
⚠️Warning
본 포스트는 당일 학원에서 배운 내용을 복습하는 목적의 공부 기록 시리즈입니다. 정보 전달의 목적이 아님을 유의해주세요! 잘못된 내용에 대한 피드백을 환영합니다:)
: 이진 검색 트리(binary search tree)라는 자료구조의 형태로 데이터를 저장하는 컬렉션 클래스.
중복된 데이터의 저장을 허용하지 않으며 정렬된 위치에 저장하므로 저장순서를 유지하지 않음.
TreeSet
- Tree 구조 > 이진 트리 구조(이진 탐색 트리, Binary Search Tree)
- Set 사용법
Set
- 순서가 없다.
- 중복값을 가지지 않는다.

HashSet<Integer> set1 = new HashSet<Integer>();
TreeSet<Integer> set2 = new TreeSet<Integer>();
HashSet<Integer> set1 = new HashSet<Integer>();
TreeSet<Integer> set2 = new TreeSet<Integer>();
//HashSet > add
set1.add(10);
set1.add(30);
set1.add(40);
set1.add(20);
set1.add(50);
//TreeSet > add
set2.add(10);
set2.add(30);
set2.add(40);
set2.add(20);
set2.add(50);
//HashSet 출력 > HashSet본인만의 순서로 정렬
System.out.println(set1); //[50, 20, 40, 10, 30]
//TreeSet 출력 > 오름차순
System.out.println(set2); //[10, 20, 30, 40, 50]Collections.sort(list)로 정렬 HashSet<Integer> set3 = new HashSet<Integer>();
set3.add(20);
set3.add(50);
set3.add(30);
set3.add(10);
set3.add(40);
//정렬 작업 전
System.out.println(set3); //[50, 20, 40, 10, 30]
//ArrayList 생성하여 HashSet을 ArrayList로 복사
ArrayList<Integer> list = new ArrayList<Integer>(set3);
//ArrayList sort 활용하여 정렬
Collections.sort(list);
//정렬 작업 후 출력
System.out.println(list); //[10, 20, 30, 40, 50]for (int n : set2) {
System.out.println(n);
}
//10 20 30 40 50Iterator<Integer> iter = set2.iterator();
while (iter.hasNext()) {
System.out.println(iter.next());
}
//10 20 30 40 50.first() .last()System.out.println(set2.first()); //10
System.out.println(set2.last()); //50
.headSet(30) .tailSet(30) .subSet(20,40) //exclusive(30 미포함)
System.out.println(set2.headSet(30)); //[10, 20]
//inclusive(30 포함)
System.out.println(set2.tailSet(30)); //[30, 40, 50]
//첫번째 값 포함, 두번째 값 미포함 범위내 있는 데이터
System.out.println(set2.subSet(20, 40)); //[20, 30]