2021-11-14

TreeMap

底层数据结构是二叉树,元素无序不可重复,但可以按照元素大小自动排序。

对于自定义的对象,必须指定排序规则:

java.lang.ClassCastException   //出现这个异常说明没有实现Comparable

1.实现Comparable接口,重写compareTo方法,编写排序规则。

2.实现比较器的方式:新建一个类来实现util包下的Comparator接口,并重写方法compare,在主方法new对象时,还得new一个比较器传入集合。如下:

       TreeSet<Cuu> ts=new TreeSet(new CuuComparator());

       其中,Cuu为自定义类,CuuComparator为比较器

或者使用匿名内部类的方式,这样就不用新建类,就直接new接口。如下:

TreeSet<Cuu> ts3=new TreeSet<>(new Comparator<Cuu>() {
            @Override
            public int compare(Cuu o1, Cuu o2) {
                return o1.age-o2.age;
            }
        });

建议:比较规则需要多个并且需要在不同规则之间切换,就使用Comparator.

compareTo方法的返回值:

大于零(>0)会继续在右子树上找

小于零(<0)会继续在左子树上找

等于零(=0)value会被覆盖

上一篇:【Java】HashSet 和 TreeSet


下一篇:Java进阶核心之集合框架Set·19