CUBは子供の白熊

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

第8章 その他の Java 8 機能を理解する : 問題 6 : Comparator の合成

問題

Comparatorインターフェースのメソッドだけを使ってjavafx.geometry.Point2Dの全順序(Total Ordering)な Comparator を定義せよ。
“全順序” とは、同値なオブジェクトに対してのみゼロを返す Comparator のことである。

解答

X座標の Comparator とY座標の Comparator を合成する。

Comparator<Point2D> compPoint =
    Comparator.comparingDouble((Point2D p) -> p.getX())
    .thenComparing(p -> p.getY());

さらに問題

同じことをjavafx.geometry.Rectangle2Dに対して行え

解答

左上の点の Comparator と右下の点の Comparator を合成する。

Comparator<Rectangle2D> compRect =
    Comparator.comparingDouble((Rectangle2D r) -> r.getMinX())
    .thenComparing(r -> r.getMinY())
    .thenComparing(r -> r.getMaxX())
    .thenComparing(r -> r.getMaxY());