学无先后,达者为师

网站首页 编程语言 正文

lambda Collectors类的静态工厂方法

作者:m0_59259076 更新时间: 2023-10-11 编程语言

java.util.stream.Collectors

目录

java.util.stream.Collectors

1. toList

2. toSet

3. toCollection

4. counting

5. summingInt

6. averagingInt

7. summarizingInt

8. joining

9. minBy

10. maxBy

11. reducing

12. collectingAndThen

13. groupingBy

14. partitioningBy


1. toList

返回类型:List<T> ;

用途:用于把流中所有项目收集到一个 List;

示例:

List<Dish> dishes = menuStream.collect(toList());

2. toSet

返回类型:Set<T> ;

用途:用于把流中所有项目收集到一个 Set,删除重复项;

示例:

Set<Dish> dishes = menuStream.collect(toSet());

3. toCollection

返回类型:Collection<T> ;

用途:用于把流中所有项目收集到给定的供应源创建的集合;

示例:

Collection<Dish> dishes = menuStream.collect(toCollection(), ArrayList::new);

4. counting

返回类型:Long ;

用途:用于计算流中元素的个数;

示例:

long howManyDishes = menuStream.collect(counting());

5. summingInt

返回类型:Integer ;

用途:用于对流中项目的一个整数属性求和;

示例:

int totalCalories = menuStream.collect(summingInt(Dish::getCalories));

6. averagingInt

返回类型:Double ;

用途:用于计算流中项目 Integer 属性的平均值。

示例:

double avgCalories = menuStream.collect(averagingInt(Dish::getCalories));

7. summarizingInt

返回类型:IntSummaryStatistics ;

用途:用于收集关于流中项目 Integer 属性的统计值,例如最大、最小、总和与平均值;

示例:

IntSummaryStatistics menuStatistics=menuStream.collect(summarizingInt(Dish::getCalories));

8. joining

返回类型:String ;

用途:用于连接对流中每个项目调用 toString 方法所生成的字符串;

示例:

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

9. minBy

返回类型:Optional<T> ;

用途:用于一个包裹了流中按照给定比较器选出的最小元素的 Optional,或如果流为空则为 Optional.empty();

示例:

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

10. maxBy

返回类型:Optional<T> ;

用途:用于一个包裹了流中按照给定比较器选出的最大元素的 Optional,或如果流为空则为 Optional.empty()。

示例:

Optional<Dish> fattest = menuStream.collect(maxBy(comparingInt(Dish::getCalories)));

11. reducing

返回类型:归约操作产生的类型 ;

用途:用于从一个作为累加器的初始值开始,利用 BinaryOperator 与流中的元素逐个结合,从而将流归约为单个值;

示例:

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

12. collectingAndThen

返回类型:转换函数返回的类型 ;

用途:用于包裹另一个收集器,对其结果应用转换函数;

示例:

int howManyDishes = menuStream.collect(collectingAndThen(toList(), List::size));

13. groupingBy

返回类型:Map<K, List<T>> ;

用途:根据项目的一个属性的值对流中的项目作问组,并将属性值作为结果 Map 的键;

示例:

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

14. partitioningBy

返回类型:Map<Boolean,List<T>> ;

用途:根据对流中每个项目应用谓词的结果来对项目进行分区;

示例:

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

(注:本文章参看自《Java 8 实战》厄马(Raoul-Gabriel Urma) / 弗斯科(Mario Fusco) / 米克罗夫特(Alan Mycroft))

原文链接:https://blog.csdn.net/m0_59259076/article/details/122814590

  • 上一篇:没有了
  • 下一篇:没有了
栏目分类
最近更新