CUBは子供の白熊

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

第9章 Java 7 の機能を復習する : 問題 8 : Integer.compare と Integer#compareTo

問題

整数の X 座標と Y 座標をフィールドに持つPointクラスのcompareToメソッドを、Integer#compareToを使わないで実装せよ。

public int compareTo(Point other) {
    int diff = Integer.valueOf(x).compareTo(other.x);
    if (diff != 0)
        return diff;
    return Integer.valueOf(y).compareTo(other.y);
}

解答

Integer#compareToメソッドは、JDK 1.2 で導入されたIntegerオブジェクト同士の比較メソッドである。
従って、毎回Integerオブジェクトを生成することになる。

ところが Java 7 で導入されたInteger.compareメソッドは、intを対象としているためIntegerオブジェクトを生成する必要がない。

Integer.compareメソッドを使用

public int compareTo(Point other) {
    int diff = Integer.compare(x, other.x);
    if (diff != 0)
        return diff;
    return Integer.compare(y, other.y);
}