Java 的輸入/輸出與串流
Alex Liu
Software Development Engineer
用 streams 進行資料轉換
List 轉為 Set)ArrayList、LinkedList)HashSet、TreeSet)Keys/Values 作為 Streams)(如 HashMap、TreeMap)Arrays.stream())後續範例使用名為 names 的 ArrayList
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()` 儲存轉換後的 stream 資料
upperCaseNameStream.collect(Collectors.toSet())
{CHARLIE, ALICE, BOB, DAVID}
.reduce() 方法
使用 .reduce() 需兩個輸入
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 的輸入/輸出與串流