gpt4 book ai didi

Java:实现可比较但条件 if 太多。我怎样才能避免它们?

转载 作者:行者123 更新时间:2023-12-01 06:46:58 26 4
gpt4 key购买 nike

我有一个实现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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com