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

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其实是一个集合元素的函数模型,他并不是集合,也不是数据结构, 其本身并不存储任何元素或其他地址

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 函数式接口 解释 有且只有一个抽象方法的接口 函数式编程的体现就是Lambda,所以函数式接口就是可以适用于Lam...
    abboo阅读 3,933评论 0 0
  • Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。Stream 使用一种...
    网恋被骗600万阅读 4,498评论 0 0
  • 1. Stream流的出现原因 我们操作集合的时候有时候十分麻烦,如下 上面的集合操作数据的时候,每一个需求都需要...
    牧心musing阅读 3,882评论 0 0
  • 1.Stream流 - 概念 Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处...
    灬东皇灬阅读 4,531评论 0 0
  • Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。Stream 使用一种...
    初心myp阅读 2,118评论 0 2