前面自己学过一些流的概念,比如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流
标签:arr,stream,author,list,idea,book,概述 From: https://www.cnblogs.com/kun1790051360/p/17911727.html