Java の入出力とストリーム
Alex Liu
Software Development Engineer
Stream によるデータ変換
List → Set)ArrayList, LinkedList)HashSet, TreeSet)Keys/Values を Streams として)(例: HashMap, TreeMap)Arrays.stream() 経由)以降で使用する ArrayList names の例
names: ["Alice", "Bob", "Charlie", "David"]
Set、Collectors、Stream をインポートimport java.util.Set; import java.util.stream.Collectors; import java.util.stream.Stream;// 先ほど作成した `ArrayList` `names` を `Stream` に変換 Stream<String> namesStream = names.stream();
[Alice, Bob, Charlie, David]// `.map()` で各要素を大文字に変換
Stream<String> upperCaseNameStream = namesStream.map(
name -> name.toUpperCase())
[ALICE, BOB, CHARLIE, DAVID]// `.collect()` と `Collectors.toSet()` で変換結果を Set に格納
upperCaseNameStream.collect(Collectors.toSet())
{CHARLIE, ALICE, BOB, DAVID}
.reduce() メソッド
.reduce() は2つの入力を取ります
0)(x, y) -> x + y の意味:x: これまでの累積値y: 現在の要素y を x に加算し、全要素が処理されるまで継続ArrayList names を Stream に変換Stream<String> stream = names.stream();
.map() で名前の長さに変換し、.reduce() で合計stream
.map(name -> name.length())
.reduce(0, (sum, length) -> sum + length);
20Java の入出力とストリーム