今の現場に入るまでラムダ式は使用しないルールの現場ばかりだったのですが、
ラムダ式も使用してよいとのことでちょこちょこ使用しました。
その中でよく使用したラムダ式を備忘録として残そうと思います。
filter
使用方法は以下。
List<String> colorList = Arrays.asList("Red", "Blue", "White", "Pink", "Yellow");
List<String> resultList = colorList.stream()
.filter(e -> (5 <= e.length()))
.collect(Collectors.toList());
//[White, Yellow]
if文をなるべく使わないようにしたいときに使用しました。
ラムダ式ってeclipseのフィルターを使うとわかりにくくなってしまうので
↑のように区切るのが好きなのですが、このくらい単純だったら1行にしてしまっても良いのかなと思います。
あとこんな風にしている個所もありました。
List<String> colorList = Arrays.asList("Red", "Blue", "White", "Pink", "Yellow");
List<String> resultList = colorList.stream()
.filter(e -> (※ここでif文とReturnを書いている))
.collect(Collectors.toList());
これだと可読性的にはどうなのかと思いますが、入れ子よりはいいのですかね。好みの問題?
sorted
その名の通りソートしたいときに使用しました。
List<Item> list = Arrays.asList(
new Item(9, "apple"),
new Item(3, "lemon"),
new Item(6, "peach"),
new Item(6, "banana"));
List<Item> sorted = list.stream()
.sorted(Comparator.comparing(Item::getId))
.collect(Collectors.toList());
// [Item{3, 'lemon'}, Item{6, 'peach'}, Item{6, 'banana'}, Item{9, 'apple'}]
Comparator.comparing(ここ)はA::b
A → クラス/オブジェクト
b → 項目
です。
ここが空の場合にどうなるかはこちら参照。
https://amg-solution.jp/blog/26894
一旦ここまで。