• Java学习:Stream流式思想


    Stream流

    Java 8 API添加了一种新的机制——Stream(流)。Stream和IO流不是一回事。

    • 流式思想:像生产流水线一样,一个操作接一个操作。
    • 使用Stream流的步骤:数据源→转换成流→操作1→操作2→……
    • 数据源(source):可以是集合、数组等。

    Stream操作有两个基础特征:

    1. Pipelining(流水线):流操作会返回流对象(新的对象),以便后续继续进行流操作。
    2. 内部迭代:不需要像for循环或Iterator一样进行显式的迭代。

    遍历及过滤集合中的元素

    使用传统方式遍历及过滤集合中的元素

     1 import java.util.ArrayList;
     2 import java.util.List;
     3  
     4 /*
     5  *   使用 传统方式 遍历 及 过滤 集合
     6  *   需求 :
     7  *       1、第一步过滤,只需要 以 “张” 开头的名字
     8  *       2、第二步过滤只需要 ,名字长度为 2 的名字
     9  * */
    10 public class Test01Stream {
    11  
    12     public static void main(String[] args) {
    13 //        创建一个集合 List , 存储姓名 并根据要求 进行过滤
    14         List<String> nameList = new ArrayList<>();
    15         nameList.add("张三");
    16         nameList.add("李四");
    17         nameList.add("王五");
    18         nameList.add("赵六");
    19         nameList.add("田七");
    20         nameList.add("王八");
    21         nameList.add("张四");
    22         nameList.add("张三丰");
    23  
    24 //        使用传统方式进行过滤
    25  
    26 //         1、第一步过滤,只需要 以张开头的名字
    27  
    28 //        需要 创建一个新的集合 对 第一次过滤之后的 姓名 进行存储
    29         List<String> listA = new ArrayList<>();
    30         for (String s : nameList) {  //使用增强 for 循环 对 集合进行遍历
    31             if (s.startsWith("张")) {
    32                 listA.add(s);//将过滤后的结果 添加到新的集合中
    33             }
    34         }
    35  
    36         List<String> listB = new ArrayList<>();
    37         for (String s : listA) {
    38             if (s.length() == 2) {
    39                 listB.add(s);
    40             }
    41         }
    42  
    43         for (String s : listB) {
    44             System.out.print(s + "  ");// 最终过滤结果  张三  张四
    45         }
    46     }
    47 }

    使用使用Stream流的方式遍历及过滤集合中的元素

     1 import java.util.ArrayList;
     2 import java.util.List;
     3  
     4 /*
     5 *   使用Stream流的方式 遍历 并 过滤集合
     6 *       需求 :
     7             1、第一步过滤,只需要 以 “张” 开头的名字
     8             2、第二步过滤只需要 ,名字长度为 2 的名字
     9 * */
    10 public class Test02Stream {
    11  
    12     public static void main(String[] args) {
    13         //        创建一个集合 List , 存储姓名 并根据要求 进行过滤
    14         List<String> nameList = new ArrayList<>();
    15         nameList.add("张三");
    16         nameList.add("李四");
    17         nameList.add("王五");
    18         nameList.add("赵六");
    19         nameList.add("田七");
    20         nameList.add("王八");
    21         nameList.add("张四");
    22         nameList.add("张三丰");
    23  
    24 //        使用 Stream 流的方式 ,对集合进行遍历,并过滤
    25 //        1、第一步过滤,只需要 以 “张” 开头的名字
    26  
    27 //        将集合转换为 Stream流, 直接调用Collection接口的一个默认方法 stream
    28         nameList.stream().filter(s->s.startsWith("张"))
    29                          .filter(s->s.length()==2)
    30                          .forEach(s-> System.out.print(s+"  "));// 输出结果 : 张三  张四
    31     }
    32 }
  • 相关阅读:
    PL/SQL会遇到中文插入乱码问题、数据显示不全
    PL/SQL数据生成器
    编程小案例
    MySql案例收集
    关于PL/SQL的安装配置
    Android 歌词桌面同步显示
    DataGridView控件使用大全
    flex java 交互
    Android Launcher 全面剖析
    Android adb 命令
  • 原文地址:https://www.cnblogs.com/cainiao-chuanqi/p/11331978.html
Copyright © 2020-2023  润新知