Java学习:Stream流式思想

Posted cainiao-chuanqi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 

 

以上是关于Java学习:Stream流式思想的主要内容,如果未能解决你的问题,请参考以下文章

流式计算-Java8Stream

流式计算-Java8Stream

Stream流 方法引用 - 16

jdk1.8新特性Stream流式处理

Java---Stream流

java_Stream 流式计算