我有一个实现Comparable
的对象列表
。
我想对此列表进行排序,这就是我使用Comparable
的原因。
每个对象都有一个字段 weight
,它由另外 3 个成员 int 变量组成。
对于具有最大权重
的对象,compareTo
返回1
。
最重的不仅是如果
weightObj1.member1 > weightObj2.member1
weightObj1.member2 > weightObj2.member2
weightObj1.member3 > weightObj2.member3
但实际上有点复杂,我最终得到的代码有太多条件 if。
如果 weightObj1.member1 > WeightObj2.member1
成立,那么我关心 weightObj1.member2 > WeightObj2.member2
是否成立。
反之亦然。
否则,如果 weightObj1.member2 > WeightObj2.member2
成立,那么我关心 weightObj1.member3 > WeightObj2.member3
,反之亦然。
最后,如果 weightObj1.member3 > WeightObj2.member3
成立并且如果满足特定条件,则此 weightObj1
获胜,反之亦然
我想知道是否有类似的设计方法?
最佳答案
您可以尝试使用 Apache commons-lang
中的 CompareToBuilder
:
public int compareTo(Object o) {
MyClass myClass = (MyClass) o;
return new CompareToBuilder()
.appendSuper(super.compareTo(o)
.append(this.field1, myClass.field1)
.append(this.field2, myClass.field2)
.append(this.field3, myClass.field3)
.toComparison();
}
另请参阅
关于Java:实现可比较但条件 if 太多。我怎样才能避免它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8957139/