第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); }