java8 Stream API之reduce
来源:互联网 发布:阿里云大厦今日头条 编辑:程序博客网 时间:2024/04/27 18:29
通过前面那篇文章,我们已经对Stream API有了初步的认识,并对它在集合处理中的增强作用表示了肯定。同时我们上篇中示例了forEach、fiter、sum这些常用的功能,本篇我们只讲reduce。
reduce的作用是把stream中的元素给组合起来。至于怎么组合起来:它需要我们首先提供一个起始种子,然后依照某种运算规则使其与stream的第一个元素发生关系产生一个新的种子,这个新的种子再紧接着与stream的第二个元素发生关系产生又一个新的种子,就这样依次递归执行,最后产生的结果就是reduce的最终产出,这就是reduce的算法最通俗的描述;那么结合实际的业务场景来说,运用reduce我们可以做sum,min,max,average,所以这些我们称之为针对具体应用场景的reduce,这些常用的reduce,stream api已经为我们封装了对应的方法。
以下给出一些具体应用场景的reduce实现方式:
sum:
@Test public void testSum() { List<Integer> integers = Arrays.asList(1, 2, 3, 4, 5); // 没有起始值时返回为Optional类型 Optional<Integer> sumOptional = integers.stream().reduce(Integer::sum); System.out.println(sumOptional.get()); // 可以给一个起始种子值 Integer sumReduce = integers.stream().reduce(0, Integer::sum); System.out.println(sumReduce); //直接用sum方法 Integer sum = integers.stream().mapToInt(i -> i).sum(); System.out.println(sum); }
concat
@Test public void testConcat() { //构造字符串流 List<String> strs = Arrays.asList("H", "E", "L", "L", "O"); // reduce String concatReduce = strs.stream().reduce("", String::concat); System.out.println(concatReduce); }
min
@Test public void testMin() { //min reduce Stream<Integer> integerStream = Stream.of(1, 2, 3, 4, 5); Integer minReduce = integerStream.reduce(Integer.MAX_VALUE, Integer::min); System.out.println(minReduce); // min Stream<Integer> integerStream1 = Stream.of(1, 2, 3, 4, 5); OptionalInt min = integerStream1.mapToInt(i -> i).min(); System.out.println(min.getAsInt()); }
max
@Test public void testMax() { //max reduce Stream<Integer> integerStream = Stream.of(1, 2, 3, 4, 5); Integer maxReduce = integerStream.reduce(Integer.MIN_VALUE, Integer::max); System.out.println(maxReduce); // max Stream<Integer> integerStream1 = Stream.of(1, 2, 3, 4, 5); OptionalInt max = integerStream1.mapToInt(i -> i).max(); System.out.println(max.getAsInt()); }
ok,相信大家已经对reduce有所了解!
阅读全文
1 0
- java8 Stream API之reduce
- java8之Stream-API
- java8之Stream API
- Java8 Stream API之创建Stream示例
- Java8新特性之Stream API
- Java8学习笔记之Stream API
- 详解Java8特性之Stream API
- 详解Java8特性之Stream API补充
- Java8新特性之Stream API
- Java8之强大的Stream API
- Java8-Stream operation map,reduce
- Java8 stream的reduce说明
- Java8 Stream API介绍
- JAVA8 Stream API 入门
- JAVA8 Stream API 进阶
- java8 Stream API
- java8-02-Stream-API
- java8 Stream API初识
- 欧拉线性筛法求素数(顺便实现欧拉函数的求值)
- python爬虫利器-bs
- 国产免费虚拟化OVM与 OpenStack对比
- HDU1009 FatMouse' Trade 贪心
- SpringBoot学习之--单元测试(八)-2
- java8 Stream API之reduce
- centos6.5安装tensorflow1.0
- 为何Redis要比Memcached好用
- 主流Wifi芯片简要介绍
- kinectv2编译时出现错误需要目标/usr/lib/x86_64-linux-gnu/libGL.so”。 停止。
- Font Awesome 图标使用总结
- JavaScript中的sort排序
- Python的os模块
- C# 执行程序