本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2024-11(1)

JDK8新特性之Stream流

发布于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黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

13 0
收藏该文
已收藏

评论内容:(最多支持255个字符)