天天看點

Collectors 類的靜态工廠方法

工廠方法

傳回類型

用于

toList

List

把流中所有項目收集到一個List

使用示例: List dishes = menuStream.collect(toList());

toSet

Set

把流中所有項目收集到一個 Set ,删除重複項

使用示例: Set dishes = menuStream.collect(toSet());

toCollection

Collection

把流中所有項目收集到給定的供應源建立的集合

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

Long

計算流中元素的個數

使用示例: long howManyDishes = menuStream.collect(counting());

summingInt

Integer

對流中項目的一個整數屬性求和

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

averagingInt

Double

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

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

summarizingInt

IntSummaryStatistics

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

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

joining

String

連接配接對流中每個項目調用 toString 方法所生成的字元串

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

maxBy

Optional

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

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

minBy

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

使用示例: Optional 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>

根據項目的一個屬性的值對流中的項目作問組,并将屬性值作為結果 Map 的鍵

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

partitioningBy

Map<boolean,list>

根據對流中每個項目應用謂詞的結果來對項目進行分區

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