Как правильно реализовать методы compareTo?

В настоящее время я пишу метод 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;
}

Так что мне было интересно, если у вас есть эти «многоуровневые» системы сравнений (например, сравнивать a перед b перед c), какой лучший способ реализовать их? Я не могу представить, чтобы написать такой метод, как мой, если бы вам пришлось перебрать более 10 переменных.

8
задан Bill the Lizard 20 September 2012 в 21:04
поделиться