什么是Stream
Stream
被翻译为流,它的工作过程像将一瓶水导入有很多过滤阀的管道一样,水每经过一个过滤阀,便被操作一次,比如过滤,转换等,最后管道的另外一头有一个容器负责接收剩下的水。
示意图如下:
首先通过source
产生流,然后依次通过一些中间操作,比如过滤,转换,限制等,最后结束对流的操作。
Stream
也可以理解为一个更加高级的迭代器,主要的作用便是遍历其中每一个元素。
Stream作用
Stream API
主要是通过Lambda
表达式完成,极大的提高了程序的效率和可读性,同时Stram API
中自带的并行流使得并发处理集合的门槛再次降低,
使用Stream API
编程无需多写一行多线程的大门就可以非常方便的写出高性能的并发程序。使用Stream API
能够使你的代码更加优雅。
流的另一特点是可无限性,使用Stream
,数据源可以是无限大的。
List<Student> result=new ArrayList<>(); for(Student student:students){ if(student.getAge()>18){ result.add(student); } } return result;
使用Stream
,我们可以参照上面的流程示意图来做,首先产生Stream
,然后filter
过滤,最后归并到容器中。
转换为代码如下:
return students.stream().filter(s->s.getAge()>18).collect(Collectors.toList());
- 首先
stream()
获得流 - 然后
filter(s->s.getAge()>18)
过滤 - 最后
collect(Collectors.toList())
归并到容器中