我有一个实现list的对象的Comparable

我想对这个列表进行排序,这就是为什么我使用Comparable的原因。

每个对象都有一个字段weight,该字段由3个其他成员int变量组成。

compareTo1最多的对象返回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值,因此您应该能够提出一个可以捕获所有比较和其他比较两个对象的转换的值。当任何成员值更改时,只需更新单个值即可。

09-16 03:35