https://youtu.be/_4EF-26Ke3o?list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp
https://www.youtube.com/watch?v=Kcz-z6xTbgk&list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp&index=131
📖본 포스팅은 '자바의 정석 - 남궁성 저자' 님의 책과 유튜브 강의를 보고 작성되었습니다.
1. TreeSet - 범위 탐색, 정렬
- 이진 탐색 트리(Binary search tree)로 구현 범위 탐색과 정렬에 유리하다.
- 이진 트리는 모든 노드가 최대 2개의 하위 노드를 갖는다. (0~2개까지의 하위노드)
- 각 요소(node)가 나무(tree) 형태로 연결(LinkedList의 변형 - 얘는 1개만 그러나 트리셋은 하위를 2개까지)
- 부모보다 작은 값은 왼쪽, 큰 값은 오른쪽에 저장
- 데이터가 많아질 수록, 추가와 삭제에 시간이 더 걸린다(비교 횟수 증가)
2. TreeSet 데이터 저장과정 boolean add(Object o)
- HashSet은 equals( ), hashCode( )로 비교한다.
- TreeSet은 compare( )를 호출해서 비교한다.
3. TreeSet의 주요 메소드
4. 실습
[TreeSet을 만드는 코드]
package javajungsuk;
import java.util.Set;
import java.util.TreeSet;
public class Java11_13 {
public static void main(String[] args) {
Set set = new TreeSet(); // 정렬이 따로 필요 없다.
for (int i = 0; set.size()<6 ; i++) {
int num = (int)(Math.random()*45)+1;
set.add(num); // set.add(new Integer(num));
}
System.out.println(set);
}
}
[subSet 사용 코드]
package javajungsuk;
import java.util.TreeSet;
public class Java11_14 {
public static void main(String[] args) {
TreeSet set = new TreeSet();
String from ="b";
String to ="d";
set.add("abc"); set.add("alien"); set.add("bat");
set.add("car"); set.add("Car"); set.add("disc");
set.add("dance"); set.add("dZZZZZ"); set.add("dzzzz");
set.add("elephant"); set.add("elevator"); set.add("fan");
set.add("flower");
System.out.println(set);
System.out.println("range search : from " + from +" to" + to);
System.out.println("result1 : "+set.subSet(from, to));
System.out.println("result2 : "+set.subSet(from, to+"zzz"));
}
}
[기준값을 기준으로 큰 값 작은 값을 찾는 코드]
package javajungsuk;
import java.util.TreeSet;
public class Java11_15 {
public static void main(String[] args) {
TreeSet set = new TreeSet();
int[] score = {80,95,50,35,45,65,10,100};
for (int i = 0; i < score.length; i++)
set.add(new Integer(score[i]));
System.out.println("50보다 작은 값: "+ set.headSet(50));
System.out.println("50보다 큰 값: " + set.tailSet(50));
System.out.println("40과 80 사이의 값" + set.subSet(40, 80));
}
}
위의 살펴본 예제들은 범위 검색에 유리한 TreeSet의 예시를 보여준 것이다.
'Java > 객체지향' 카테고리의 다른 글
[객체지향][자바의 정석] - 23. Collections 클래스, 컬렉션 클래스 요약 (0) | 2022.02.13 |
---|---|
[객체지향][자바의 정석] - 22. HashMap (0) | 2022.02.13 |
[객체지향][자바의 정석] - 20. HashSet (0) | 2022.01.31 |
[객체지향][자바의 정석] - 19. Comparator과 Comparable (0) | 2022.01.31 |
[객체지향][자바의 정석] - 18. 배열을 다루기 편리한 메서드(static) 제공 (0) | 2022.01.27 |