我使用了一个带有自编写比较器的TreeSet.现在,当我向TreeSet添加元素并且Comparator的compare方法返回0时,看起来TreeSet只包含一个具有相同排名的Object.
我没有看到javadocs中记录了这种行为.也许我想念一些东西.你能证实这种行为吗?
我编辑了比较器.现在它永远不会返回0并且TreeSet包含具有相同排名的所有对象.
如果我想要多个具有相同排名的对象,那就是它必须的样子吗?
是的,这在JavaDoc for TreeSet中有记录:
请注意,由集合维护的排序(无论是否提供显式比较器)必须与
equals是否正确实现Set接口一致.(请参阅Comparable或Comparator了解与之一致的精确定义equals.)这是因为Set接口是根据equals操作定义的 ,但是TreeSet实例使用其compareTo(或compare)方法执行所有元素比较,因此通过此方法认为两个元素相等从集合的角度来看,是平等的.集合的行为即使其排序不一致也是明确定义的equals; 它只是不遵守Set界面的一般合同.(强调我的)
| 归档时间: |
|
| 查看次数: |
460 次 |
| 最近记录: |