java TreeSet是如何添加不重复元素的
compare()方法很重要。
当TreeSet指定了比较器,或对象实现了Comparable接口时。实际上找的是compare方法。与equals无关。
public class TimeComparator implements Comparator<Node> {
//时间从小到大排序
@Override
public int compare(Node o1, Node o2) {
if(o1.equals(o2)){
return 0;
}
if (o1.getData().getTime() - o2.getData().getTime() < 0) {
return -1;
} else if (o1.getData().getTime() - o2.getData().getTime() > 0) {
return 1;
}else{
return o1.getName().compareTo(o2.getName()); //*1*
}
/*比较器return的说明:一定不能在else中return -1,1等确定的值。会当成return 0处理。表示相等,不再循环找*/
}
}
说明:*1*行中,一定不能return-1,1,也不能return 0。如果确实除了前边的是相等的,那就return 0.
在set放元素时,是一个循环比较的过程,一旦有一个相等,就不再比较。
Java TreeSet添加原理
本文介绍Java TreeSet如何通过Comparator或Comparable接口实现元素唯一性,重点解释了TimeComparator的具体实现方式及compare方法的返回值规则。
580

被折叠的 条评论
为什么被折叠?



