stream流累加(stream数据流)

http://www.itjxue.com  2023-01-25 19:47  来源:未知  点击次数: 

class person{ int pv; BigDecimal payMoney; BigDecimal debtMoney; } 用java stream分组求和

创建一个class对象person,存放pv,paymoney,debtMoney这三个属性

再次创建map集合sum,用于存放统计结果

创建对象流ObjectStream,每次读取一个person对象,读取后进行累加操作。

得到求和后的map

JDK8 Stream、Collector 浅析(一)

A sequence of elements supporting sequential and parallel aggregate operations

流是一个支持串行和并行的聚合操作的元素序列。(有点抽象。。)

流可以认为是对集合功能上的增强,能对集合对象实现更高效、更便利的操作。但是 流不是数据结构,流本身不储存数据,只是从源 (集合是流使用最多的源,下面会介绍其他的源) 中获取数据, 并进行相应的计算 ——对流的操作会生成一个结果, 不会修改数据源。

为什么需要它们?

使用Stream之后,可以让我们的代码变得更加精简、更加易读;但其实使用难度是提高的。

filter invoked

filter invoked

map invoked

filter invoked

[2 java]

一个Collector对象也是由Supplier、accumulator、combiner组成的

Supplier 在流的计算过程中,提供容器,供后续 accumulator 和 combiner 使用

accumulator 为累加器,将stream中U元素加入到T中,(list, item) - list.add( item) 就可以作为一个累加器

combiner为合并器,用来将所有accumulator处理后的容器结果进行合并,在并行流中,也就是多线程下才会被使用到,此次分享只讲串行流。像下面中(list11, list22) - list11.addAll (list22)就可以作为一个合并器

Stream的各类型求和

打印结果:

IntSummaryStatistics{count=3, sum=12, min=2, average=4.000000, max=7}

统计集合元素的个数:3

集合元素累加之和:12

集合中最小值:7

集合中最大值:2

集合中平均值:4.0

java中如何用stream将一个文档里的内容写到新的文档中

File?filein?=?new?File("D://","Example1.txt");

File?fileout?=?new?File("D://","Example1-1.txt");

FileInputStream?fis;

try{

????if(!filein.exists()){

????????filein.createNewFile();

????}

????if(!fileout.exists()){

????????fileout.createNewFile();

????}

????fis?=?new?FileInputStream(filein);

????FileOutputStream?fos?=?new?FileOutputStream(fileout,true);

????InputStreamReader?in?=?new?InputStreamReader(fis,"GB2312");

????OutputStreamWriter?out?=?new?OutputStreamWriter(fos,"GB2312");

????int?is;

????while?((is=in.read())?!=?-1){

????????out.write(is);

????}

????in.close();

????out.close();

}catch?(IOException?e){

????e.printStackTrace();

}

欢迎追问

(责任编辑:IT教学网)

更多

相关windows文章