我有一个实现list
的对象的Comparable
。
我想对这个列表进行排序,这就是为什么我使用Comparable
的原因。
每个对象都有一个字段weight
,该字段由3个其他成员int变量组成。compareTo
为1
最多的对象返回weight
。
最大的重量不仅在于
weightObj1.member1 > weightObj2.member1
weightObj1.member2 > weightObj2.member2
weightObj1.member3 > weightObj2.member3
但是实际上要复杂一点,而我最终得到的代码包含太多的条件ifs。
如果
weightObj1.member1 > weightObj2.member1
成立,那么我在乎weightObj1.member2 > weightObj2.member2
。反之亦然。
否则,如果
weightObj1.member2 > weightObj2.member2
成立,那么我会关心weightObj1.member3 > weightObj2.member3
,反之亦然。最后,如果
weightObj1.member3 > weightObj2.member3
成立且如果满足特定条件,则此weightObj1
获胜,反之亦然我想知道是否有类似这样的设计方法?
最佳答案
API for Comparable
指出:
强烈建议(尽管不是必需的)自然
顺序与等式一致。
由于关注的值是int
值,因此您应该能够提出一个可以捕获所有比较和其他比较两个对象的转换的值。当任何成员值更改时,只需更新单个值即可。