JAVA8之collect总结(给自己)

原创 2016年07月18日 17:23:44

一,collect是一个终端操作,它接收的参数是将流中的元素累积到汇总结果的各种方式(称为收集器)

二,预定义收集器包括将流元素归约和汇总到一个值.如下

工厂方法

返回类型

用于

toList

List<T>

把流中所有元素收集到List中

示例:List<Menu> menus=Menu.getMenus.stream().collect(Collectors.toList())

toSet

Set<T>

把流中所有元素收集到Set中,删除重复项

示例:Set<Menu> menus=Menu.getMenus.stream().collect(Collectors.toSet())

toCollection

Collection<T>

把流中所有元素收集到给定的供应源创建的集合中

示例:ArrayList<Menu> menus=Menu.getMenus.stream().collect(Collectors.toCollection(ArrayList::new))

Counting

Long

计算流中元素个数

示例:Long count=Menu.getMenus.stream().collect(counting);

SummingInt

Integer

对流中元素的一个整数属性求和

示例:Integer count=Menu.getMenus.stream().collect(summingInt(Menu::getCalories))

averagingInt

Double

计算流中元素integer属性的平均值

示例:Double averaging=Menu.getMenus.stream().collect(averagingInt(Menu::getCalories))

Joining

String

连接流中每个元素的toString方法生成的字符串

示例:String name=Menu.getMenus.stream().map(Menu::getName).collect(joining(“, ”))

maxBy

Optional<T>

一个包裹了流中按照给定比较器选出的最大元素的optional
如果为空返回的是Optional.empty()

示例:Optional<Menu> fattest=Menu.getMenus.stream().collect(maxBy(Menu::getCalories))

minBy

Optional<T>

一个包裹了流中按照给定比较器选出的最大元素的optional
如果为空返回的是Optional.empty()

示例: Optional<Menu> lessest=Menu.getMenus.stream().collect(minBy(Menu::getCalories))

Reducing

归约操作产生的类型

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

示例:int count=Menu.getMenus.stream().collect(reducing(0,Menu::getCalories,Integer::sum));

collectingAndThen

转换函数返回的类型

包裹另一个转换器,对其结果应用转换函数

示例:Int count=Menu.getMenus.stream().collect(collectingAndThen(toList(),List::size))

groupingBy

Map<K,List<T>>

根据流中元素的某个值对流中的元素进行分组,并将属性值做为结果map的键

示例:Map<Type,List<Menu>> menuType=Menu.getMenus.stream().collect(groupingby(Menu::getType))

partitioningBy

Map<Boolean,List<T>>

根据流中每个元素应用谓语的结果来对项目进行分区

示例:Map<Boolean,List<Menu>> menuType=Menu.getMenus.stream().collect(partitioningBy(Menu::isType));


三,预定义收集器可以用groupby对流中元素进行分组或者用partitioningBy进行分区

四,收集器可以高效的复合起来,进行多级分组,多级分区和归约

五,可以自己实现collector接口进行定义自己的收集器

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Java8中聚合操作collect、reduce方法详解

Stream的基本概念 Stream和集合的区别: Stream不会自己存储元素。元素储存在底层集合或者根据需要产生。 Stream操作符不会改变源对象。相反,它会返回一个持有结果的新的Strea...
  • piglite
  • piglite
  • 2016年12月22日 23:51
  • 3950

Java8中使用filter()过滤列表,使用collect将stream转化为list

Reference: https://www.mkyong.com/java8/java-8-streams-filter-examples/ /* In Java 8, using st...
  • huludan
  • huludan
  • 2017年01月10日 18:22
  • 14110

Java8 Lambda表达式教程

Java8新特性,Lambda表达式与集合类bulk operation教程。迄今为止最全面的中文原创java lambda表达式教程。...

Java集合类详解

如果您喜欢这些文章,欢迎点击此处订阅本Blog
  • softwave
  • softwave
  • 2009年05月11日 00:34
  • 197672

Java - Collection

collection层次结构 理论 集合中存放的依然是对象的引用而不是对象 集合中只能放置对象的引用,不能放置原生数据类型, 我们需要使用原生数据类型的封装类才能加入到集合中 集合中放置的都是...
  • itlwc
  • itlwc
  • 2013年08月21日 15:13
  • 35355

JAVA8之collect总结

一,collect是一个终端操作,它接收的参数是将流中的元素累积到汇总结果的各种方式(称为收集器) 二,预定义收集器包括将流元素归约和汇总到一个值.如下 工厂方法 ...

java的Collection类详解

数组: 存储同一种数据类型的集合容器. 数组的特点: 1. 只能存储同一种数据类型的数据。 2. 一旦初始化,长度固定。  3. 数组中的元素与元素之间的内存地址是连续的。 注意: Object类...
  • oguro
  • oguro
  • 2016年11月30日 21:10
  • 17840

java中collection是什么?怎么理解?怎么使用?

collections主要提供一些,排序的算法,随机的,反向的,  collection 是容器的祖先接口     线性表,链表,哈希表是常用的数据结构,在进行Java开发时,JDK已经为我...

Java 8系列之Stream的强大工具Collector

概述前面我们使用过collect(toList()),在流中生成列表。实际开发过程中,List又是我们经常用到的数据结构,但是有时候我们也希望Stream能够转换生成其他的值,比如Map或者set,甚...

Java8新特性——StreamAPI(二)

1. 收集器简介收集器用来将经过筛选、映射的流进行最后的整理,可以使得最后的结果以不同的形式展现。collect方法即为收集器,它接收Collector接口的实现作为具体收集器的收集方法。Collec...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JAVA8之collect总结(给自己)
举报原因:
原因补充:

(最多只允许输入30个字)