寫給大忙人看的Java SE 8 讀書心得筆記與習題-第二章 Steam API
Collection API本來就很常用,多了Stream 更是讓人不用管實作的完成很多演算工作。 不過實際用起來還是要花非常多時間,用法實在太多了,配上lambda更是眼花撩亂 第二章要點 你可以從集合 陣列 Generator或是iterator中創建Stream 使用filter來選擇元素,使用map來改變元素 要從Stream中獲得結果,請使用reduction操作符,例如count、max、min 、findFirst 或findAny,其中一些方法會獲得一個Optional值 你可以收集(collect) 集合 陣列 字符串或是map中的Stream結果 Collectors 類的groupBy和partitionBy允許你對Stream中的內容分組,並獲取每個組的結果 Java 對 基本型別 int long和double提供了專門的Stream 練習題與自己版本的解答 編寫一個2.1節中for循環的並型版本,獲取處理器的數量,創造出多個獨立的執行緒(線程),每個都只處理列表的一個片段,然後將他們各自的結果彙總起來(我們不希望這些執行緒都更新一個計數器,為什麼?) public class Exercise2_1 { public static void main(String[] args) throws IOException, InterruptedException, ExecutionException { String contents = new String( Files.readAllBytes(Paths.get("src/exercises/alice.txt")), StandardCharsets.UTF_8); // 邏輯直接使用範例程式碼 List words = Arrays.asList(contents.split("[\\P{L}]+")); long count = 0; for (String w : words) {