CUBは子供の白熊

Java SE 8 実践プログラミングの練習問題を解く

第9章 Java 7 の機能を復習する : 問題 10 : java.util.Objects クラス その 2

問題

次のLabeledPointクラスのcompareToメソッドを実装せよ。

public class LabeledPoint {
    private String label;
    private int x;
    private int y;
    ...
}

解答

Java 8 で導入されたComparatorの default メソッドthenComparingを使えば一発なんだけど、ここは Java 7 なので我慢して…

public int compareTo(LabeledPoint other) {
    Objects.requireNonNull(other);
    if (Objects.compare(label, other.label, String.CASE_INSENSITIVE_ORDER) != 0)
        return Objects.compare(label, other.label, String.CASE_INSENSITIVE_ORDER);
    else if (Integer.compare(x, other.x) != 0)
        return Integer.compare(x, other.x);
    else
        return Integer.compare(y, other.y);
}