| ① 全件ループ | java<br>for (String s : list) {<br> System.out.println(s);<br>} | java<br>list.forEach(System.out::println); | forEach() は基本ループの代替。副作用(外部変更)は最小限に。 |
| ② 条件付き処理(if) | java<br>for (String s : list) {<br> if (s.length() > 3) {<br> System.out.println(s);<br> }<br>} | java<br>list.stream()<br> .filter(s -> s.length() > 3)<br> .forEach(System.out::println); | filter() で条件を明示化。ネストを浅くできる。 |
| ③ 条件抽出+新リスト作成 | java<br>List<String> result = new ArrayList<>();<br>for (String s : list) {<br> if (s.length() > 3) {<br> result.add(s);<br> }<br>} | java<br>List<String> result = list.stream()<br> .filter(s -> s.length() > 3)<br> .collect(Collectors.toList()); | collect(toList()) でリスト再構築。 |
| ④ 要素の変換(加工) | java<br>List<String> upper = new ArrayList<>();<br>for (String s : list) {<br> upper.add(s.toUpperCase());<br>} | java<br>List<String> upper = list.stream()<br> .map(String::toUpperCase)<br> .collect(Collectors.toList()); | map() は「変換」を表す。 |
| ⑤ 条件付き加工 | java<br>List<String> result = new ArrayList<>();<br>for (String s : list) {<br> if (s.length() > 3) {<br> result.add(s.toUpperCase());<br> }<br>} | java<br>List<String> result = list.stream()<br> .filter(s -> s.length() > 3)<br> .map(String::toUpperCase)<br> .collect(Collectors.toList()); | filter→map→collect は黄金パターン。 |
| ⑥ 集計(件数) | java<br>int count = 0;<br>for (String s : list) {<br> if (s.startsWith("A")) count++;<br>} | java<br>long count = list.stream()<br> .filter(s -> s.startsWith("A"))<br> .count(); | count() で件数取得。 |
| ⑦ 並べ替え | java<br>List<String> sorted = new ArrayList<>(list);<br>Collections.sort(sorted); | java<br>List<String> sorted = list.stream()<br> .sorted()<br> .collect(Collectors.toList()); | sorted() は自然順序。独自順序は Comparator を渡す。 |
| ⑧ グループ化 | (手動で Map に分類) | java<br>Map<String, List<User>> grouped = users.stream()<br> .collect(Collectors.groupingBy(User::getDept)); | groupingBy() で分類処理が一行に。 |
| ⑨ 重複削除 | java<br>Set<String> set = new HashSet<>();<br>for (String s : list) {<br> set.add(s);<br>} | java<br>List<String> distinct = list.stream()<br> .distinct()<br> .collect(Collectors.toList()); | distinct() で簡単にユニーク化。 |
| ⑩ ページング(件数制限) | java<br>int limit = 5;<br>for (int i = 0; i < limit && i < list.size(); i++) {<br> System.out.println(list.get(i));<br>} | java<br>list.stream()<br> .limit(5)<br> .forEach(System.out::println); | limit() で先頭N件を取得。 |
| ⑪ スキップ(途中から) | java<br>for (int i = 10; i < list.size(); i++) {<br> System.out.println(list.get(i));<br>} | java<br>list.stream()<br> .skip(10)<br> .forEach(System.out::println); | ページング処理で2ページ目以降に便利。 |
| ⑫ ネストリストの展開 | java<br>List<String> result = new ArrayList<>();<br>for (List<String> inner : listOfLists) {<br> result.addAll(inner);<br>} | java<br>List<String> result = listOfLists.stream()<br> .flatMap(List::stream)<br> .collect(Collectors.toList()); | flatMap() で List<List> → List に変換。 |