Stream API
Stream APIとは
Listなどで、各要素に対し処理を行うメソッド。まず、streamを取得する。Listの場合、stream()メソッドを使用する。次に、中間操作を必要なだけ行う。最後に終端操作を行う。
List<String> list = new ArrayList<>(Arrays.asList("佐藤", "鈴木", "佐々木"));
// 各要素に 様を付ける
List<String> list2 = list.stream().map(a -> a + "様").toList();
// Userクラスnameが鈴木を探す
User name = list.stream()
.filter(a -> a.getName().equals("鈴木"))
.findFirst()
.orElse(null);
中間操作
map(要素 -> 処理) | 各要素を変換する | map(a -> a + "様") |
filter(要素 -> 条件) | 条件に合った要素の抽出 | filter(a -> a.length()>3) |
distinct() | 重複排除 | distinct() |
sorted() | 整列 | sorted()・・昇順 sorted((a,b) -> b - a)・・降順 |
limit(数値) | 要素数の制限 | limit(3) |
skip(数値) | 要素のスキップ | skip(2) |
終端操作
count() | 要素数を返す | count() |
forEach(要素 -> 処理) | 各要素の処理 | forEach(System.out::println) |
findFirst() | 先頭要素を返す(Optional) | findFirst().orElse(null) |
toList() | リストで返す | toList() |
toArray() | 配列で返す | toArray() |
allMatch(要素 -> 条件) | 条件が全要素マッチするか | allMatch(a -> a.length()>3) |
anyMatch(要素 -> 条件) | 条件が1要素でもマッチするか | anyMatch(a -> a.length()>3) |
noneMatch(要素 -> 条件) | 条件が一致するものが無いか | noneMatch(a -> a.length()>3) |
IntStream
sum() | 合計を返す |
average() | 平均を返す |
max() | 最大値を返す(Optional) |
min() | 最小値を返す(Optional) |