TreeSet(2)
[자바의 정석 - 기초편] ch11-42~45 TreeSet(2)
트리셋이 갖고 있는 주요 생성자와 메서드에 대해 배워보자.
기본적인 add, size, remove, isEmpty, iterator등은 제외했다. 그건 다 Collection인터페이스에서 상속받은거라 중복된다.
생성자는 위와 같다. 생성자를 형성할때 비교기준을 인자로 주는게 기본이다. 만약 주지 않고 생성하면 저장하는 객체가 갖고 있는 compareTo()를 이용한다.(기본 비교 기준)
설명과 같다.
예를들어 30이 인자로 들어온 객체인데, 30이 있다면 30을 반환하고, 30없이 10,20,40,50만 TreeSet에 있다면, ceiling은 40을, floor는 20을 반환해준다. 아무것도 없다면 NULL을 반환한다.
ceiling과 floor가 제공하는 서브기능은 바로 이 higher와 lower이다.
설명과 같다.
예제를 보자.
import java.util.*;
public class EXTreeSetLotto {
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);
}
System.out.println(set);
List list = new LinkedList(set);
// LinkedList(Collection C)
// Collections.sort(list); // Collectoins.sort(List list)
// System.out.println(list);
}
}
전에 HashSet으로 만든 코드를 TreeSet으로 교체한 코드이다. TreeSet은 이진탐색트리 기반이라 출력될때 알아서 정렬되어서 나오므로 HashSet처럼 정렬하는 부분을 따로 만들어야 될 필요가 없다.