实现比较方法的规则
像compareTo,必须是“反身,反对称和传递”,是否有任何规则来实现比较方法? 谢谢
来自Comparator API :
- 实现者必须确保所有x和y的sgn(compare(x,y))== -sgn(compare(y,x))。 (这意味着当且仅当compare(y,x)抛出exception时,compare(x,y)必须抛出exception。)
- 实现者还必须确保关系是传递的:((compare(x,y)> 0)&&(compare(y,z)> 0))表示compare(x,z)> 0。
- 最后,实现者必须确保compare(x,y)== 0意味着所有z的sgn(compare(x,z))== sgn(compare(y,z))。
- 通常情况是这样,但并非严格要求(compare(x,y)== 0)==(x.equals(y))。 一般来说,任何违反此条件的比较器都应清楚地表明这一事实。 推荐的语言是“注意:这个比较器强加了与equals不一致的排序。”
- 尝试将JPA与Derby一起使用时ClassNotFoundException:org.apache.derby.jdbc.EmbeddedDriver
- 从排序的ArrayList中删除重复项,同时保留重复项中的一些元素