那么如果TreeSet集合是否只需要保证CompareTo返回0就行了么?不需要保证对象是否相等? 我测试过,如果一个类的compareTo方法总是返回-1,equals方法返回True,还是能往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 值表示应该使用元素的自然顺序。
那么如果TreeSet集合是否只需要保证CompareTo返回0就行了么?不需要保证对象是否相等? 我测试过,如果一个类的compareTo方法总是返回-1,equals方法返回True,还是能往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 值表示应该使用元素的自然顺序。 嗯。谢谢。
判断集合对象是否相等还是要用equals方法
我测试过,如果一个类的compareTo方法总是返回-1,equals方法返回True,还是能往TreeSet中无限添加这个类的同一个对象的。
我测试过,如果一个类的compareTo方法总是返回-1,equals方法返回True,还是能往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 值表示应该使用元素的自然顺序。
我测试过,如果一个类的compareTo方法总是返回-1,equals方法返回True,还是能往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 值表示应该使用元素的自然顺序。
嗯。谢谢。
重写compareTo方法,总返回0,那么同一个对象只能添加1个。