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会被覆盖