美文网首页
八 JDK8新特性——第二节 Stream流式思想

八 JDK8新特性——第二节 Stream流式思想

作者: 杜艳_66c4 | 来源:发表于2022-07-05 15:04 被阅读0次

    1、使用传统的方式遍历集合

    Stream 流有别于I/O流,是对集合和数组进行操作,解决集合数组的弊端


    循环弊端
    package con.day13.demo05.StreamAndMethod;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class Demo01Test {
        //使用传统方式对集合进行遍历
        public static void main(String[] args) {
            //创建一个集合,存储数据
            ArrayList<String> list = new ArrayList<>();
            list.add("张无忌");
            list.add("周芷若");
            list.add("赵敏");
            list.add("张强");
            list.add("张三丰");
    
            List<String> zhangList1 = new ArrayList<>();
               for (String name:list){
                if (name.startsWith("张")){
                    zhangList1.add(name);
                }
            }
              List<String> shortList = new ArrayList<>();
               for (String name: zhangList1){
                   if (name.length() == 3){
                       shortList.add(name);
                   }
               }
    
               for (String name : shortList){  // 简写shortList.for()
                   System.out.println(name);
               }
        }
    
    }
    
    结果
    张无忌
    张三丰
    

    2、使用Streaml流的方式,遍历集合

    循环弊端
    package con.day13.demo05.StreamAndMethod;
    
    import java.util.ArrayList;
    /*
    Stream 流是JDK 1.8之后出现的, 关注做什么,而不是怎么做
    使用Stream流遍历结合,对集合中数据进行过滤
     */
    public class Demo02Stream {
        public static void main(String[] args) {
            //创建一个集合,存储数据
            ArrayList<String> list = new ArrayList<>();
            list.add("张无忌");
            list.add("周芷若");
            list.add("赵敏");
            list.add("张强");
            list.add("张三丰");
    
            list.stream()
                    .filter(name->name.startsWith("张"))
                    .filter(name->name.length() == 3)
                    .forEach(name-> System.out.println(name));
        }
    }
    

    3、流式思想概述

    流式思想类似于生产车间的流水线


    集合元素的处理方案,流式思想

    这里filter map skip 都是对函数模型进行操作,集合元素并没有真正被处理,只有当终结方法count执行的时候,整个模型才会按照指定策略执行操作,而这得益于Lambda的延迟执行特性

    Stream其实是一个集合元素的函数模型,他并不是集合,也不是数据结构, 其本身并不存储任何元素或其他地址

    相关文章

      网友评论

          本文标题:八 JDK8新特性——第二节 Stream流式思想

          本文链接:https://www.haomeiwen.com/subject/kdqqprtx.html