Сравнение классов, содержащих два числа - PullRequest
0 голосов
/ 10 июля 2019

Итак, у меня есть класс, который содержит два числа, точнее X и Z. Я храню его на TreeMap, которому нужен класс ключей, реализующий Comparable. Проблема в том, как я собираюсь сравнить X и Z с другим классом по методу compareTo()?

Я уже пытался сложить целые числа X и Z для обоих классов и сравнить их с Integer.compare(), но это не очень хорошее решение, потому что если переключены X и Z, это закончится тем же результатом.

public class Position2D implements Comparable<Position2D> {

    private int x, z;

    @Override
    public int compareTo(Position2D position2D) {
        int coordinatesSum = this.getX() + this.getZ();
        int otherCoordinatesSum = position2D.getX() + position2D.getZ();
        return Integer.compare(coordinatesSum, otherCoordinatesSum);
    }
}

1 Ответ

0 голосов
/ 10 июля 2019

Решено с помощью:

    @Override
    public int compareTo(@Nonnull Position2D position2D) {
        int xComparison = Integer.compare(this.getX(), position2D.getX());
        int zComparison = Integer.compare(this.getZ(), position2D.getZ());

        return xComparison != 0 ? xComparison : zComparison;
    }

Особая благодарность @harold.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...