stream流的概述以及idea与stream

发布时间 2023-12-18 18:44:31作者: 天启A

前面自己学过一些流的概念,比如IO流,用于读写本地的数据。

stream流主要是用于对集合/数组进行操作

 

idea现在已经很好的支持Stream流操作,在debug的时候可以很好的看到详细内容

 下面以一个我的简单demo为例

1.distinct进行去重

 2.filter去重之后的过滤//是一个中间操作

 3.foreach打印//这个是终结操作,只有出现终结操作前面的才会生效

 /*虽然参数名是随便写的,但是最好是见名知其意*/

创建流对象

1.单列集合:list.stream();

2.数组:Arrays.stream(arr);//Integer[] arr={1,2,3}  也可以使用steam.of(arr)

3.双列集合:map.entrySet.stream();//KV对使用

中间操作

过滤器:filter(a->a>2)

对流中的数据进行计算或者转换:map(a->a.getName)//举例子:把类元素变成类的姓名元素

        map的匿名函数是有两个变量,第一个变量的类型是流初始化时的类型,第二类型是你想要的具体类型。上面的例子中如果a是Autor类型,那么流对象就在这时变成了string类型

去重:distinct() //这个方法是依赖object的equals方法来判断对象的,所以注意需要重写的equals对象

        //这里推荐使用lombok的@hashandequals注解

排序:sorted((a,b)->a-b)  //如果调用空参的sorted,流中的元素是需要实现了Comparator,通过这个接口定义一个方法,然后再通过方法进行比较

限制:list(n)

跳过:skip(n)

 flatmap(author->author.getBooks.stream()):返回一个流,下面的例子为:author内有一个list参数book,现在我要取出所有book使用flatmap把author流转化为了book流