你如何干净地实现compareTo方法?

Cow*_*Zow 8 java comparable

目前我正在以二进制函数的形式编写compareTo方法:ax ^ 2 + bx + c.

a,b,c是通过构造函数传递给类的整数系数.

在compareTo方法中,我应该首先比较两个函数之间的a系数,但如果它们相等,我比较b系数.如果b是相等的,我比较c.

我为此提出的方法最终变得非常难看:

public int compareTo(QuadraticFunction other)
{
    if (a > other.a)
        return 1;
    else if (a < other.a)
        return -1;
    else if (b > other.b)
        return 1;
    else if (b < other.b)
        return -1;
    else if (c > other.c)
        return 1;
    else if (c < other.c)
        return -1;
    else
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

所以我想知道,如果你有这些"分层"的比较系统(比如在c之前比较a之前的b),那么实现它们的最佳方法是什么?如果你不得不经历10多个变量,我无法想象会像我一样编写一个方法.

Oli*_*rth 6

对于任意数量的系数(所有相同类型),您应该将它们存储在List(或类似的)中,而不是单独命名的成员变量.这允许您将示例代码转换为迭代.