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