首页 / JAVA / java8 Stream
java8 Stream
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java8 Stream,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2007字,纯文字阅读大概需要3分钟。
内容图文
一、Stream原理
1.使用Stream的基本步骤:
1)创建Stream
;
2)转换Stream
,每次转换原有Stream
对象不改变,返回一个新的Stream
对象,【可以有多次转换】
;
3)对Stream
进行聚合reduce
操作,获取想要的结果;
2.创建Stream的方式:
1)通过Stream接口的静态工厂方法
(注意:Java8里接口可以带静态方法);
a)of
:有两个overload方法,一个接受变长参数,一个接口单一值。
Stream<Integer> integerStream = Stream.of(1, 2, 3, 5);
b)generator
:生成一个无限长度的Stream,其元素的生成是通过给定的Supplier(这个接口可以看成一个对象的工厂,每次调用返回一个给定类型的对象),配合limit使用。
Stream.generate(Math::random).limit(10).forEach(System.out::println);
c)iterate
:也是生成无限长度的Stream,和generator不同的是,其元素的生成是重复对给定的种子值(seed)调用用户指定函数来生成的。其中包含的元素可以认为是:seed,f(seed),f(f(seed))无限循环。
Stream.iterate(1, item -> item + 1).limit(10).forEach(System.out::println);
2)通过Collection接口的默认方法(默认方法:default method,也是Java8中的一个新特性,就是接口中的一个带有实现的方法)。
3.转换Stream:
List<Integer> nums = Lists.newArrayList(1,1,null,2,3,4,null,5,6,7,8,9,10);
System.out.println(“sum is:” + nums.stream()
.filter(num -> num != null)
.distinct()
.mapToInt(num -> num * 2)
.peek(System.out::println)
.skip(2)
.limit(4)
.sum());
4.聚合(reduce):
reduce
二、两类操作
中间操作 | 终端操作 | ||
concat() | allMatch() | 判断条件里的元素,所有的都是,返回true | |
distinct() | 去除重复元素 | anyMatch() | 判断的条件里,任意一个元素成功,返回true |
filter() | 过滤 | collect() | 收集器 |
flatMap() | 合并两个Stream | count() | 计数 |
limit() | 返回一个不超过给定长度的流。 | findAny() | findAny方法将返回当前流中的任意元素。 |
map() | 对流中每一个元素应用函数 | findFirst() | 查找第一个元素 |
peek() | 打断点 | forEach() | 遍历 |
skip() | 返回一个扔掉了前n个元素的流。如果流中元素不足n个,则返回一个空流。 | forEachOrdered() | 顺序遍历 |
sorted() | 排序 | max() | 最大 |
parallel() | 并行 | min() | 最小 |
sequential() | noneMatch() | noneMatch跟allMatch相反,判断条件里的元素,所有的都不是,返回true | |
unordered() | reduce() | 聚合 | |
toArray() |
三、IntStream、LongStream和DoubleStream
内容总结
以上是互联网集市为您收集整理的java8 Stream全部内容,希望文章能够帮你解决java8 Stream所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。