Java8新特性-010-Stream规约-终止操作
2018-01-06 13:57
591 查看
方法名 | 描述 |
---|---|
reduce(T iden, BinaryOperator b) | 可以将流中元素反复结合起来,得到一个值。返回T |
reduce(BinaryOperator b) | 可以将流中元素反复结合起来,得到一个值。返回Optional |
测试代码
TestReduce.javapackage java8.reduce; import java.util.Arrays; import java.util.List; import java.util.Optional; import org.junit.Test; /** * @author 微信公众号:JavaWeb架构师 * @version 创建时间:2017年12月29日 上午9:54:15 */ public class TestReduce { private List<Integer> listInteger = Arrays.asList(1,2,-1,-2,-3,10,11,50,-50); /** * 1.规约 * reduce(T iden, BinaryOperator b) 可以将流中元素反复结合起来,得到一个值。返回T * reduce(BinaryOperator b) 可以将流中元素反复结合起来,得到一个值。返回Optional<T> */ // 1.reduce(T iden, BinaryOperator b):起始值为iden,累计的做b操作 @Test public void test1() { /** * T reduce(T identity,BinaryOperator<T> accumulator): * 使用提供的身份值和associative累积功能对此流的元素执行reduction , * 并返回减小的值。 * 这是一个terminal operation 。 * API Note: * 总和,最小,最大,平均和字符串连接都是减少的特殊情况。 一个数字流可以表示为: * Integer sum = integers.reduce(0, (a, b) -> a+b); 要么: * Integer sum = integers.reduce(0, Integer::sum); 尽管与简单地将循环 * 中的总体变量相比,这可能看起来更为迂回的方式进行,但减少操作更平稳地并行化, * 而不需要额外的同步,并大大降低了数据竞争的风险。 * 参数 * identity - 累积函数的身份值 * accumulator -一个 associative , non-interfering , stateless功能组合两个值 */ // 计算集合中所有元素的总和(0与第一个元素相加得结果s1,s1再与第二个元素相加得结果s2,……) Integer sum = listInteger.stream().reduce(0,(a,b) -> a+b); System.out.println("总和是:" + sum); /* * 结果: * 总和是:18 */ } // reduce(BinaryOperator b):可以将流中元素反复结合起来,得到一个值。返回Optional<T> @Test public void test2() { /** * Optional<T> reduce(BinaryOperator<T> accumulator): * 使用associative累积函数对此流的元素执行reduction ,并返回描述减小值(如果有的话) * 这是一个terminal operation 。 * 参数 * accumulator -一个 associative , non-interfering , stateless功能组合两个值 * 结果 * 一个Optional描述了减少的结果 */ // 计算集合中所有元素的总和(第一个元素与第二个元素相加得结果s1,……) Optional<Integer> reduce = listInteger.stream().reduce(Integer::sum); System.out.println("总和是:" + reduce.get()); /* * 结果: * 总和是:18 */ } }
其它
源码下载关注下方公众号,回复:Java8.code
欢迎加入交流群:451826376
更多信息:www.itcourse.top
相关文章推荐
- Java8新特性-011-Stream收集-终止操作
- Java8-Stream-终止操作-查找与匹配
- Java8新特性-006-Stream筛选与切片-中间操作
- Java8-Stream-终止操作-归约与收集
- Java8 Stream的终止操作使用示例
- Java8新特性-008-Stream排序-中间操作
- java8_02_stream(二)终止操作
- java8新特性Predicate和Stream操作集合
- java8 Stream 的操作步骤3 终止操作
- Java8系列--Java Stream入门篇(流的操作)
- collections集合操作排序,Java8 stream集合操作
- java8 Stream API 的操作2 中间操作
- Stream:java1.8新特性
- Java8特性详解 lambda表达式 Stream
- Java 8新特性 Stream API 编程
- JAVA8新特性 -- stream(三)
- 详解Java8特性之Stream API并行流
- java8学习之Stream介绍与操作方式详解
- 第一个基于Spring-Boot框架的项目以及Java8新特新之stream流操作的简单细说
- 详解Java多线程编程中线程的启动、中断或终止操作