带你看看JDK8新特性:Stream流

相信兄弟萌在学习时碰到过这样的代码吧:

List<String> list = new ArrayList();
list.stream().forEach(a-> System.out.println(a));

我相信大家初次见到这种代码跟我一样,这 TM 是个啥?能看出来有一个 Lambda 表达式,另外这个 stream 是个啥?

有没有一点像 Steam,游戏下载平台,可以玩吃鸡、CSGO,扯远了,两者毫无关系。

下面我们来揭开 stream 的秘密,Go!

1.集合处理数据的弊端

欸,不是讲 stream 吗?怎么讲到集合的处理数据了。别急,我们从集合处理数据的弊端来引入 stream。

当我们需要对集合中的元素进行操作时,除了必要的添加、删除、获取外,最典型的就是集合遍历。我们来体验集合操作数据的弊端,需求如下:

一个 ArrayList 集合中存储有以下数据:张无忌,周芷若,赵敏,张强,张三丰。

需求:

  1. 拿到所有姓张的
  2. 拿到名字长度为 3 个字的
  3. 打印这些数据
public static void main(String[] args) {
   

        ArrayList<String> list = new ArrayList<String>();
        Collections.addAll(list,"张无忌","周芷若","赵敏","张强","张三丰");

        //1.拿到所有姓张的
        ArrayList<String> zhangList = new ArrayList<String>(); //{"张无忌","张强","张三丰"}
        for (String name : list) {
   
            if(name.startsWith("张")){
   
                zhangList.add(name);
            }
        }
    
        //2.拿到名字长度为3个字的
        ArrayList<String> threeList = new ArrayList<String>();//{"张无忌","张三丰"}
        for (String name : zhangList) {
   
            if(name.length() == 3){
   
                threeList.add(name);
            }
        }
    
        //3.打印这些数据              //{"张无忌","张三丰"}
        for (String name : threeList) {
   
            System.out.println(name);
        }
    }

可以看出:每个需求都要遍历一次集合,还要搞一个新集合来装数据,非常麻烦

2.Stream 流介绍

Stream 流不是一种数据结构,不保存数据,而是对集合中的数据进行加工处理。Stream 流式思想类似于工厂车间的 “生产流水线”。

注意:Stream 流和 IO 流(InputStream/OutputStream)没有任何关系,请暂时忘记对传统 IO 流的固有印象

在这里插入图片描述
下面我们来看看借助 Stream 流来改造上面的代码:

public static void main(String[] args) {
   
        ArrayList<String> list = new ArrayList<String>();
        Collections.addAll(list,"张无忌","周芷若","赵敏","张强","张三丰");
        l
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值