java TreeSet是如何添加不重复元素的

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)