filter()可用來過濾符合條件的元素,至於如何去判斷是否符合,通常就要藉助於實作Predicate函式介面,
例如filter(Object::nonNull)可過濾掉全部的null。
練習:將["Apple", "Asus", "Alibaba", "Orange", "Microsoft", "Google"]拆解為陣列,並找出長度大於5且結尾為e的單字。
sorted()可用來對元素做排序,至於如何去比較大小,通常就要藉助於實作Comparator函式介面。
練習:同上一個練習的字串, 拆解為陣列,並依照單字長度由小到大排序。
練習:同上,但改由大到小排序。
練習:打開exec06.SortedCustomers.java,將顧客依姓名(自然排序)、年齡(大->小)、姓別(male->female)做排序。
map()可用來對元素做轉換,至於如何去轉換,通常就要藉助於實作Function函式介面。
練習:同上一個練習的字串, 拆解為陣列,並將各個單字轉換為單字長度的數字。
練習:同上一個練習的字串, 拆解為陣列,並將各個單字轉換為大寫。
flatmap()可用來對型態為Stream的元素做「拆解後組合」的動作,例如[...[y, o, u, r], [d, o, g],...]的Stream可以再次拆解組合為[...y, o, u, r, d, o, g...],至於如何去轉換,通常就要藉助於實作Function函式介面。
練習:同上一個練習的字串, 拆解為陣列,並將各個單字再次拆解為字母。(提示:可使用flatMapToInt()、String.chars()及mapToObj())