노드의 구성은 다음과 같다
class TreeNode {
TreeNode left; //왼쪽 자식노드
Object; //저장할 객체
TreeNode right; //오른쪽 자식노드
}
LinkedList와 유사한 구조를 가진다.
데이터가 많아질 수록 추가, 삭제에 시간이 더 걸림(비교 횟수 증가)
boolean add(Object o) → compare()를 호출
TreeSet에 7,4,9,1,5의 순서로 데이터 자장하면, 아래의 과정을 거친다.
(루트부터 트리를 따라 내려가며 값을 비교. 작으면 왼쪽, 크면 오른쪽에 저장)
비교회수가 점점 늘어는 형식이다.
실습 코드를 작성해보면 다음과 같다. 무작위로 숫자를 TreeSet에 넣어주면 다음과같이 정렬이되어서 저장된다.
public class Ex11_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);
}
System.out.println(set);
}
}
실행결과
[11, 19, 26, 32, 38, 45]