发布于2021-03-13 14:26 阅读(1304) 评论(0) 点赞(13) 收藏(0)
在JDK8中一个很重要的新特性就是Stream流,学会他可以让你在写代码的时候节省很多的步骤,短短一行就可以完成对集合、数组等数据的筛选过滤和转换,首先来看看使用Stream流的构造是怎样的。
一、Stream流的构成
先贴一段Stream流的方法
public class Stream {
public static void main(String[] args) {
List<String> list= new ArrayList<>();//创建一个集合
list.add("弹力球");
list.add("瑜伽球");
list.add("篮球");
List<String> lq= list.stream().filter(S -> S.contains("篮")).collect(Collectors.toList());、 //Stream流
System.out.println(lq+"进了");//打印用Stream流处理的数据,打印结果[篮球]进了!
}
}
上面这段代码是用Stream流完成了对数组的一个筛选功能,功能点仅仅用了一行,是不是很方便,构成Stream流的语法分三部分:
1.创建Stream流
list.stream()
2.调用Stream流方法对数据进行操作
filter(S->S.contains(“篮”))//括号中的是Lambda表达式,不了解的可以查看我的上一篇文章
3.对操作完的数据进行"入库"操作,可以理解为取到了想要的球然后要放到篮筐里去
collect(Collectors.toList());
二、Stream中对数据操作的重要方法
1.mapToInt、mapToLong、mapToDoble方法,主要用来统计数组,对应的返回值类型分别是IntSummaryStatistics、LongSummaryStatice、MapSummaryStatice;
2.map方法,在方法里面操作数组,然后会有一个返回值,典型的Function函数;
3.limit方法,用来取前几个数据,如果方法中的数量超过数组的长度就返回全部数据;
4.forEach方法,没有返回值,但是可以进行输出,典型的Consumer函数
代码案例如下
public class Stream {
public static void main(String[] args) {
List<Integer> list1=new ArrayList<>();
list1.add(2);list1.add(4);list1.add(6);list1.add(8);
IntSummaryStatistics intSummaryStatistics=list1.stream().mapToInt(x->x).summaryStatistics();
//IntSummaryStatistics类主要用来处理数组
List<Integer> list2=list1.stream().map(x->x+1).collect(Collectors.toList());
//map方法可以对数组中的每一个值进行统一变换
List<Integer> list3=list1.stream().limit(3).collect(Collectors.toList());
//limit方法可以取到指定位置的数组,例子中的(3)就是取前三个
list1.stream().forEach(System.out::print);
//forEach作为一个结果输出,结果:2468
System.out.println(intSummaryStatistics.getMax());
//IntSummaryStatistics求最大值方法,结果:8
System.out.println(intSummaryStatistics.getMin());
//IntSummaryStatistics求最小值方法,结果:2
System.out.println(intSummaryStatistics.getAverage());
//IntSummaryStatistics求平均值方法,结果:5.0
System.out.println(intSummaryStatistics.getSum());
//IntSummaryStatistics求和方法,结果:20
System.out.println(list2);//结果[3,5,7,9]
System.out.println(list3);//结果[2,,4,6]
}
}
本文中的Stream流中会使用到Lambda表达式,Stream中的方法很多都用到了四大函数接口,也是JDK8的新特性,不理解的可以看我上一篇文章Lambda表达式与四大函数接口。
作者:天天在家
链接:http://www.javaheidong.com/blog/article/114502/a166e68c138af562dfb3/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!