JAVA 8 StreamAPI 和 lambda表达式 总结(二)--Stream基本操作
来源:互联网 发布:网络歌曲新打工谣 编辑:程序博客网 时间:2024/06/18 09:19
1.从迭代器到Stream操作
以前我们遍历一个集合可以用for 循环,iterator迭代器。jdk8新推出了一项特性,Stream语法,用Stream语法可以让代码更加简洁,而且原生支持的并发操作也能提高效率
List<Integer> list = new ArrayList<>();for (int i = 0; i < 100000; i++) { list.add((int) (Math.random() * 100));}int count = 0;for (int i : list) { if (i > 50) count++;}System.out.println("传统方法 列表中大于50的数有" + count + "个");long streamCount = list.stream().filter((x) -> x > 50).count();System.out.println("Stream流 列表中大于50的数有" + streamCount + "个");
上面的步骤大致是 一个list先转换为stream流,filter等方法就相当于对集合里的每个元素进行遍历然后根据固定条件进行筛选,这些步骤后stream还没有结束它的生命周期,必须要有一个结束方法结束stream,count()方法可以产生一个结果,以结束stream流。
有人说我调用filter方法对集合处理之后,只想返回处理后的集合,可以用下面的方法进行操作:
List<Integer> collect = list.stream().filter((x) -> x > 50).collect(Collectors.toList());System.out.println("返回的集合个数:" + collect.size());
Stream流作为一个操作流水线,它的执行顺序并不是按照代码的顺序来,它只有执行到count方法,当count方法需要过滤后的东西去统计时,才会执行之前filter方法,但是如果用下面的方法,就可以让stream并行执行count和filter方法。
List<Integer> collect1 = list.parallelStream().filter((x) -> x > 50).collect(Collectors.toList());
parallelStream() 替代了之前的stream()方法。
未完待续
0 0
- JAVA 8 StreamAPI 和 lambda表达式 总结(二)--Stream基本操作
- JAVA 8 StreamAPI 和 lambda表达式 总结(四)--stream的一些聚合操作
- JAVA 8 StreamAPI 和 lambda表达式 总结(一)--lambda表达式
- JAVA 8 StreamAPI 和 lambda表达式 总结(三)--Optional类型
- Java8特性详解 lambda表达式和StreamAPI
- 深入浅出理解JAVA 8 Lambda表达式 Stream
- 在Java 8中对stream带有lambda表达式的操作进行调试
- Java之Lambda表达式和Stream类简单例子
- Java 8新特性:全新的Stream API和lambda表达式
- Java 8新特性:新语法方法引用和Lambda表达式及全新的Stream API
- Java表达式之Lambda表达式(二)
- 初学java Stream以及Lambda表达式" -> "
- Java 8 :λ表达式(lambda)的基本用途
- JDK1.8之stream lambda表达式
- Java8 Lambda 表达式、Stream
- c#委托和lambda表达式(二)
- Java 8新特性:lambda表达式(四)转载总结
- Java 8 Lambda 表达式学习心得总结
- 如何使用Dockerfile构建镜像
- mac如何关闭gradle的task,杀死gradle进程 how-to-stop-gradle-task-execution-in-Android-studio
- 459. Repeated Substring Pattern | 字符串重复子串序列
- Hello GDAL(简单的GDAL入门程序)
- 微信第三方登录
- JAVA 8 StreamAPI 和 lambda表达式 总结(二)--Stream基本操作
- 项目合同管理 考纲与考试要点
- js html 特殊字符转义
- UVa 540 Team Queue 【STL】【queue】
- windows IOCP模型
- Linux常用命令之free
- Android命令行启动模拟器
- 用JDBC驱动程序连接MySQL以及增删改查的操作
- RTEMS移植USB无线网卡的设想