使用流来收集数据
上一章中我们谈到流的重要特性:
- 流中的元素不是保存在内存中
- 流不能被重复使用
- 流是懒处理数据
- 流操作不能改变流数据源
- 流允许你把操作串联起来,因此一个操作的输出可以作为下一个操作的输入
Stream的 collect() 方法
collect() 方法允许你对流中的元素进行转换和分组来生成一个新的数据结构。有两个不同版本的 collect() 方法。
第一个版本接收以下三个函数作为参数:
- Supplier:该方法创建一个中间数据类型对象。如果你使用串行流,那么该方法被调用一次。如果你使用并行流那么该方法会被调用多次并且每次调用必须生成一个新的对象
- Accumulator:该方法在处理每一个流中元素时被调用,并保存在中间数据结构
- Combiner:该方法在要把两个中间数据结构整合成一个时调用。该方法只会在使用并行流时被调用
Java 通过 Collectors 工厂类提供了一些预定义的收集器。你可以调用以下静态方法来使用这些收集器:
- averagingDouble(),averagingInt(),和 averagingLong():返回一个collector来计算平均值
- groupingBy():返回一个收集器,该收集器允许你使用流中对象的某个属性来对流中数据进行分组。最终得到的对象是一个map,它的key是选择的属性的值,value是一个对象的队列。
- groupingByConcurrent():这和groupingBy()类似但有两个重要区别。一个是在并行处理时它的性能比groupingBy()高,但在串行处理时性能慢。第二个不同点是 groupingByConcurrent() 方法不是一个排序的收集器。lists中的对象不能保证和原始数据流中的对象顺序一致。但是 groupingBy() 收集器却能保证顺序。
- joining():返回一个收集器来把流中的元素拼接成一个字符串。
- partitioningBy():返回一个收集器用来把流中数据基于一个 predicate 结果来分割
- summarizingDouble(),summarizingInt(), 和 summarizingLong():返回的收集器用来计算流中元素的汇总信息。例如调用 summarizingInt() 方法得到的最终值是 IntSummaryStatistics 对象,你可以调用该对象的 getMax(),getMin(), getCount() 等方法得到流中数据的分析信息。
- toMap():该收集器允许你把流中的数据根据传递的两个映射方法转换成一个map,第一个映射方法参数决定map 的key,第二个映射方法参数决定map的value
- toConcurrentMap():这个和toMap()类似,但是是用并行方式处理的。性能在使用并行方法时比较高效。但是得到的map里的对象是无序的。
- toList():该收集器把流中的数据收集保存在一个list中
- toCollection():该收集器允许你把流中的数据保存到一个新的Collection里并返回。该方法接收一个 Supplier 接口的实现用来创建新的collection对象
- maxBy()和minBy():该收集器返回使用传入的 comparator 参数来决定的数据流中的最大值和最小值
- toSet():该收集器把流中的数据收集保存在一个set中
相关推荐
android-amap-track-collect-master
Data-Science-Essentials-in-Python-Collect-Organize-Explore-Predict-Value.pdf
电子-DataCollect.map,单片机/嵌入式STM32-F0/F1/F2
AutoJs源码-Alipay_collect_energy_Optimize。本资源购买前提醒:本源码都是实际autojs项目模板,安装好autojs直接运行即可打开。1、支持低版本autojs。2、资源仅供学习与参考,请勿用于商业用途,否则产生的一切...
JavaScript应用实例-Alipay_collect_energy_Optimize.js
google-collect-1.0-rc1.jar
google-collect-1.0.jar,此jar包是在google code的工程中下载下来的。之前我下载其他人的就是说:bonecpjar包的开发,可是名称却还是bonecpjar包。这个是绝对真实的。 绝对有用。
google-collect-1.0.jar.zip
STM32F1 加 ADS1256 采集程序 STM32F1 加 ADS1256 采集程序 STM32F1 加 ADS1256 采集程序 STM32CubeIDE 程序
官方离线安装包,亲测可用
离线安装包,亲测可用
全概括:电源爱好者必收藏(DC-DC变换器的类型大全)
组合继承使用原型链继承,并且利用借调父类的构造函数这两个方法的组合,可以实现一种组合式继承,方法通过父类的原型传给子类,然后子类调用父类的构造函数来获得父类的一
fofa自动化收集工具
Graia-Project-Collect即将来临