import java.util.TreeSet;
public class TreeSetExample1 {
// 객체를 찾거나 범위검색에 속도가 빠르다. 그에 따른 메소드를 지원한다.
// 이진트리로 구조를 갖고 있다. 데이타가 저장시 오름차순으로 정렬구조로 관리된다.
// 숫자데이터는 값으로 정렬, 문자열은 유니코드로 정렬
public static void main(String[] args) {
TreeSet<Integer> scores = new TreeSet<Integer>();
scores.add(new Integer(87));
scores.add(new Integer(98));
scores.add(new Integer(75));
scores.add(new Integer(95));
scores.add(new Integer(80));
Integer score = null;
score = scores.first();
System.out.println("가장 낮은 점수: " + score); // 75
score = scores.last();
System.out.println("가장 높은 점수: " + score); //98
score = scores.lower(new Integer(95));
System.out.println("95점 아래 점수: " + score); // 87
score = scores.higher(new Integer(95));
System.out.println("95점 위의 점수: " + score); // 98
score = scores.floor(new Integer(95));
System.out.println("95점 이거나 바로 아래 점수: " + score); // 95
score = scores.ceiling(new Integer(85));
System.out.println("85점 이거나 바로 위의 점수: " + score); // 87
while(!scores.isEmpty()) { // pollLast() : 내림차순(높은것->낮은것)
score = scores.pollFirst(); //제일 낮은 점수객체를 꺼내오고, 제거함. 오름차순(낮은것->높은것)
System.out.println(score + " (남은 객체 수: " + scores.size() + ")");
}
}
}
import java.util.NavigableSet;
import java.util.TreeSet;
public class TreeSetExample2 {
public static void main(String[] args) {
TreeSet<Integer> scores = new TreeSet<Integer>();
scores.add(new Integer(87));
scores.add(new Integer(98));
scores.add(new Integer(75));
scores.add(new Integer(95));
scores.add(new Integer(80));
//내림차순으로 출력
NavigableSet<Integer> descendingSet = scores.descendingSet();
for(Integer score : descendingSet) {
System.out.print(score + " ");
}
System.out.println();
//오름차순.(역순)
NavigableSet<Integer> ascendingSet = descendingSet.descendingSet();
for(Integer score : ascendingSet) {
System.out.print(score + " ");
}
}
}
import java.util.NavigableSet;
import java.util.TreeSet;
public class TreeSetExample3 {
public static void main(String[] args) {
TreeSet<String> treeSet = new TreeSet<String>();
treeSet.add("apple");
treeSet.add("forever"); // "f" 수정해서 테스트.
treeSet.add("description");
treeSet.add("ever");
treeSet.add("zoo");
treeSet.add("base");
treeSet.add("guess");
treeSet.add("cherry");
System.out.println("[c~f 사이의 단어 검색]"); // 추출. c이상의 문자열에서 f 한문자를 포함한 범위
NavigableSet<String> rangeSet = treeSet.subSet("c", true, "f", true);
for(String word : rangeSet) {
System.out.println(word);
}
}
}