小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
相信有很多刚刚入坑程序员的小伙伴被一些代码搞的很头疼,这些代码让我们既感觉到很熟悉,又很陌生的感觉。我们很多刚入行的朋友更习惯于使用for循环或是迭代器去解决一些遍历的问题,但公司里很多老油子喜欢使用Java8新特性Stream流去做,这样可以用更短的代码实现需求,但是对于不熟悉的新手来说,可读性差一些。
- 为什么有经验的老手更倾向于使用Stream
- 性能优势,(大数据量)相较于迭代器,速度更快
- 支持串行与并行处理,并行处理更能充分利用CPU的资源
- Stream 是一种计算数据的流,它本身不会存储数据
- 支持函数式编程
- 代码优雅,让代码更高效,干净,简洁
- Stream 的使用方式
三步操作:
- 创建Stream
- 中间操作
- 终止操作
- Stream 的创建
Stream 的 创建都会依赖于数据源,通常是容器或者数组
Stream 流的创建大致分为4中,最为常用的就是通过集合创建
1 | java复制代码import java.util.ArrayList; |
- Stream 中间操作
Stream 中间操作,我们最为常用的就是过滤,去重,排序
本章包含我们开发最常用的对对象的去重,和更据对象中的对个属性组合排序
1 | java复制代码import com.zhj.java8.bean.Student; |
Student
1 | java复制代码public class Student implements Comparable<Student> { |
- Stream 终止操作
Stream 的终止操作,最常用的就是讲处理过的数据收集到新的容器中,同时可以实现向Sql聚合函数,分组的一些效果
1 | java复制代码package com.zhj.java8.stream; |
- Stream 特性
- 中间操作惰性执行
多个中间操作的话,不会多次循环,多个转换操作只会在终止操作的时候融合起来,一次循环完成。
- 内部迭代
- 找到符合条件的数据后边的迭代不会进行
- 流的末端操作只有一次
异常:stream has already been operated upon or closed
意思是流已经被关闭了,这是因为当我们使用末端操作之后,流就被关闭了,无法再次被调用,如果我们想重复调用,只能重新打开一个新的流。
本文转载自: 掘金