工廠方法
傳回類型
用于
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));