#概要
Java8からラムダ式が導入された。
本ページは、Javaのラムダ式の使いどころについてのメモページ。
ラムダ式は、StreamAPIと組み合わせて使用すると、使い勝手が良い。
##リストから一定の条件で値を取り出し
###ラムダ式、StreamAPIの使用なし
List<Integer> list = Arrays.asList(2, 9, 5, 7, 4);
for (Integer i : list) {
if (i >= 5) {
System.out.println(i);
}
}
###ラムダ式、StreamAPIを使用あり
List<Integer> list = Arrays.asList(2, 9, 5, 7, 4);
list.stream()
.filter(i -> i >= 5)
.forEach(System.out::println);
ラムダ式、StreamAPIを使用したほうがスッキリと可読性良く記載ができる。
以下、ラムダ式、StreamAPIを使用した例を列挙。
##辞書順ソート
List<String> list = Arrays.asList("b", "c", "a", "c", "b");
list.stream()
.sorted()
.forEach(System.out::println);
##逆辞書順ソート
List<String> list = Arrays.asList("b", "c", "a", "c", "b");
list.stream()
.sorted((s1, s2) -> s2.compareTo(s1))
.forEach(System.out::println);
##重複削除
List<String> list = Arrays.asList("b", "c", "a", "c", "b");
list.stream()
.distinct()
.forEach(System.out::println);
##5以上の値の個数をカウント
List<Integer> list = Arrays.asList(2, 9, 5, 7, 4);
long count = list.stream()
.filter(i -> i >= 5)
.count();
System.out.println(count);
##5以上の値を合算
List<Integer> list = Arrays.asList(2, 9, 5, 7, 4);
int sum = list.stream()
.filter(i -> i >= 5)
.mapToInt(i -> i)
.sum();
System.out.println(sum);
##1~10の値をマルチスレッドで出力
IntStream.range(0, 10)
.parallel()
.forEach(System.out::println);