第3章 ラムダ式を使ったプログラミング : 問題 7 : Comparator の生成
問題 7
Comparator<String>
を生成するメソッドをラムダ式を使って書け
このComparator
は、以下のオプションを組み合わすことができるようにせよ
- 普通の順序 or 逆順
- 大文字・小文字を区別 or 区別しない
- 空白を含める or 除外する
解答
“空白を除外”とは、トリミングではなく空白文字を除くこととして実装する。
public static Comparator<String> comparator( boolean reverse, // 逆順 boolean ignoreCase, // 大文字・小文字を区別しない boolean excludeSpace) // 空白を除外 { return (t, u) -> { // 正順 or 逆順 int sign = reverse ? -1: 1; // 大文字・小文字を区別 or 区別しない if (ignoreCase) { t = t.toLowerCase(); u = u.toLowerCase(); } // 空白を含める or 除外する if (excludeSpace) { t = t.replaceAll("\\s", ""); u = u.replaceAll("\\s", ""); } // 比較 return sign * t.compareTo(u); }; }