判断TreeSet中元素是否相等是否只需要判断两者通过CompareTo方法比较是否返回0即可?
那么为什么有些帖子说两个对象通过equals方法返回0就可以判断两个对象不等?
现在举个例子。
重写equals方法,使其总是返回false。
而实现CompareTo方法使其总是返回0。
那么这个类的对象添加到TreeSet会发生什么?
------解决方案--------------------
是的添加的时候不管equals
可以看api
TreeSet
public TreeSet(Comparator<? super E> c)构造一个新的空 set,该 set 根据指定的比较器进行排序。所有插入到该 set 的元素都必须可由指定的比较器相互比较:为 set 中的任何元素 e1 和 e2 执行 comparator.compare(e1, e2) 时必须不抛出 ClassCastException。如果用户尝试将违背此约束的元素添加到 set 中,则 add(Object) 调用将抛出 ClassCastException。
参数:
c - 用于对此 set 进行排序的比较器。null 值表示应该使用元素的自然顺序。
------解决方案--------------------
返回-1表示什么,表示set中已存在该对象了是吗?那么再加入这个类的同一个对象只是覆盖了之前的对象吧?set不是有序不重复的么,你可以看下set的长度有没有增加
------解决方案--------------------
TreeSet只能添加实现了Comparable接口的对象。
重写compareTo方法,总返回0,那么同一个对象只能添加1个。