Java 8 Collectors 類的靜態工廠方法

  摘自<<Java 8 實戰>>函數

Collectors 類的靜態工廠方法
工廠方法 返回類型 用於
toList List<T>  把流中全部項目收集到一個 List
使用示例: List<Dish> dishes = menuStream.collect(toList());
toSet Set<T> 把流中全部項目收集到一個 Set ,刪除重複項
使用示例: Set<Dish> dishes = menuStream.collect(toSet());
toCollection Collection<T> 把流中全部項目收集到給定的供應源建立的集合

使用示例: Collection<Dish> dishes = menuStream.collect(toCollection(),ArrayList::new);spa

counting Long 計算流中元素的個數
使用示例: long howManyDishes = menuStream.collect(counting());
summingInt Integer 對流中項目的一個整數屬性求和

使用示例: int totalCalories = menuStream.collect(summingInt(Dish::getCalories));ci

averagingInt Double 計算流中項目 Integer 屬性的平均值

使用示例: double avgCalories = menuStream.collect(averagingInt(Dish::getCalories));字符串

summarizingInt IntSummaryStatistics

收集關於流中項目 Integer 屬性的統計值,例如最大、最小、總和與平均值get

使用示例: IntSummaryStatistics menuStatistics = menuStream.collect(summarizingInt(Dish::getCalories));it

joining String 鏈接對流中每一個項目調用 toString 方法所生成的字符串

使用示例: String shortMenu = menuStream.map(Dish::getName).collect(joining(","));io

maxBy Optional<T>

一個包裹了流中按照給定比較器選出的最大元素的 Optional,或若是流爲空則爲 Optional.empty()table

使用示例: Optional<Dish> fattest = menuStream.collect(maxBy(comparingInt(Dish::getCalories)));test

minBy Optional<T>

一個包裹了流中按照給定比較器選出的最小元素的 Optional,或若是流爲空則爲 Optional.empty()List

使用示例: Optional<Dish> lightest = menuStream.collect(minBy(comparingInt(Dish::getCalories)));

reducing 歸約操做產生的類型

從一個做爲累加器的初始值開始,利用 BinaryOperator 與流中的元素逐個結合,從而將流歸約爲單個值

使用示例: int totalCalories = menuStream.collect(reducing(0, Dish::getCalories, Integer::sum));

collectingAndThen 轉換函數返回的類型 包裹另外一個收集器,對其結果應用轉換函數

使用示例: int howManyDishes = menuStream.collect(collectingAndThen(toList(), List::size));

groupingBy Map<K, List<T>>

根據項目的一個屬性的值對流中的項目做問組,並將屬性值做爲結果 Map 的鍵

使用示例: Map<Dish.Type,List<Dish>> dishesByType = menuStream.collect(groupingBy(Dish::getType));

partitioningBy Map<Boolean,List<T>> 根據對流中每一個項目應用謂詞的結果來對項目進行分區

使用示例: Map<Boolean,List<Dish>> vegetarianDishes = menuStream.collect(partitioningBy(Dish::isVegetarian));

相關文章
相關標籤/搜索