phi*_*686 2 java collections comparator
它在Comparator接口的合同中说,它必须与equals一致.
如果equalsTo = true,这是否意味着Comparator = 0,或者当且仅当 equalsTo = true时,它是否意味着Comparator = 0 ?
我似乎记得它是第二个,但是我遇到了许多按非唯一子属性排序的比较器.
例如,我可能有对象具有子属性日期,我想按提交日期对对象列表进行排序.但是,您可以使用相同日期的多个对象?这有什么后果?当然这个问题已经有了最佳实践解决方案吗?如何在没有违反比较合同的情况下对属性进行排序,并且不保证是唯一的?这种违规行为会带来什么后果?他们可以管理吗?
比较器必须与equals一致,这一点都不是真的.
文档只是警告这种情况:
当使用能够强加与equals不一致的排序的比较器来排序有序集(或有序映射)时,应该谨慎行事(http://docs.oracle.com/javase/7/docs/api/java/util/Comparator .html)
如果您有一个基于日期的订购,另一个基于日期+时间的订购,您应该简单地实施多个比较器.
也许你比较Comparator与Comparable?对于Comparable,文档强烈反对这种情况:
强烈建议(尽管不要求)自然排序与equals一致.(http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html)
如果您意识到一个对象只能有一个Comparable实现,但Comparator的多个实现,则这种差异是有意义的.比较器的整个想法是有多种方法来比较同一个类.
| 归档时间: |
|
| 查看次数: |
878 次 |
| 最近记录: |