(黑马程序员)TreeSet集合总节笔记(二)

来源:互联网 发布:软件构件图 编辑:程序博客网 时间:2024/05/23 07:24

TreeSet是二叉树结构,何为二叉树呢,就是一层层向下分支,进来一个元素先和最上面一个节点比较,然后再顺次往下比较,注意:最高节点并不是第一次存进来的元素,而是中间那个元素,比如  

            存1--2(和1比)---3(和1比完和2比)|---4(和2比完和3比)

                                                                                      |----0(和2比完和1比)

            往里面存元素时,比如里面已有A,存B时,是B调用compareToA比, 

            即B.compareToA),如返回正数,则说明B>A,B会排在A后面,负数则B<A B会排在A前面。

里面的结构并不是树形结构,而是顺序排列的,插在一个左边比自己小而右边比自己大的位子。自左往右增大,只是添加元素比较时,先从中间开始比较,遇到大的往右比,遇到小了的往左比。验证代码如下:

import java.util.TreeSet;

public static void main(String[] args) {

TreeSet set = new TreeSet();

set.add(new Parent(1));

set.add(new Parent(8));

set.add(new Parent(4));

set.add(new Parent(3));

for(Object o:set){

Parent o1 = (Parent)o;

System.out.println(o1.age);

}

}

}

class Parent implements Comparable {

int age = 0;

public Parent(int age) {

this.age = age;

}

public int compareTo(Object o) {

Parent o1 = (Parent)o;

System.out.println("methodofparent"+this.age+"---"+o1.age);

return age>o1.age?1:age<o1.age?-1:0;

}

}

输出结果是method of parent1---1

method of parent8---1

method of parent4---1

method of parent4---8

method of parent3---4

method of parent3---1

1

3

4

8

完全验证了存储时是4插在了18之间,隔开了18.

原创粉丝点击