Java8 Collectors 收集器靜態(tài)方法
主要方法:
名稱 | 返回類型 | 用于 | 使用示例 |
---|---|---|---|
toList() | List<T> | 將流中所有項目收集到一個List | List<T> l = stream.collect(toList()); |
toSet() | Set<T> | 將流中所有項目收集到一個Set | Set<T> s = stream.collect(toSet()); |
toCollection | Collection<T> | 將數(shù)據(jù)轉(zhuǎn)換為指定的集合 | Collection<T> c = stream.collect(toCollection(),ArrayList::new);Collection<T> c = stream.collect(toCollection(),HashSet::new); |
counting() | Long | 計算流中數(shù)量 | long l = stream.collect(counting()); |
summingInt() | Integer | 返回流中整數(shù)屬性求和 | int i = stream.collect(summingInt( T::getXX )); |
averagingInt() | Double | 計算流中Integer屬性的平均值 | double d = stream.collect(averagingInt(T::getXX)); |
summarizingInt() | IntSummaryStatistics | 收集流中Integer屬性的統(tǒng)計值 | IntSummaryStatistics i = stream.collect(summarizingInt(T::getXX)); |
joining() | String | 將流中每個元素調(diào)用toString方法拼接 | String s = stream.collect(joining(" , "); |
maxBy() | Optional<T> | 篩選流中最大元素的Optional宠蚂,流為空則Optional.empty() | Optional<T> o = stream.collect(maxBy(Comparator.comparingInt(T::getXX))); |
minBy() | Optional<T> | 篩選流中最小元素的Optional,流為空則Optional.empty() | Optional<T> o = stream.collect(minBy(Comparator.comparingInt(T::getXX))); |
reducing() | 歸約操作產(chǎn)生的類型 | 從初始值開始艾君,利用BinaryOperator與流中每個元素相結(jié)合腮鞍,從而將流歸約成單個值 | int i = stream.collect(reducing(0, T::getXX, Integer :: sum)); |
collectingAndThen() | 轉(zhuǎn)換函數(shù)返回的類型 | 包裹一個收集器淮蜈,對其結(jié)果應(yīng)用轉(zhuǎn)換函數(shù) | int i = stream.collect(collectingAndThen(toList(),List :: size); |
groupingBy() | Map<K,List<T>> | 根據(jù)流中一個屬性的值做分組,并以該屬性為Map的一個Key | Map<T.XX,List<T>> map = stream.collect(groupingBy(T::getXX)); |
partitioningBy() | Map<Boolean,List<T>> | 根據(jù)對流中的每個元素的應(yīng)用謂詞的結(jié)果進行分區(qū)(true,false) | Map<Boolean,List<T>> map = stream.collect(partitioningBy(T::isXX)); |