Java学习:Stream流式思想

Wesley13
• 阅读 670

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 }
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
Java Stream
1Stream简介Stream是数据渠道,用于操作数据源(集合,数组等)所生成得元素序列。而集合讲得是数据,流讲得是计算。注意:Stream自己不会存储元素。Stream不会改变源对象。相反,它会返回一个持有结果得新StreamStream操作时延迟执行得,这意味着它们会等到需要结果时才执
Wesley13 Wesley13
3年前
JDK1.8 之Stream API总结
Stream是Java8新增加的类,用来补充集合类。Stream代表数据流,流中的数据元素的数量可能是有限的,也可能是无限的。Stream和其它集合类的区别在于:其它集合类主要关注与有限数量的数据的访问和有效管理(增删改),而Stream并没有提供访问和管理元素的方式,而是通过声明数据源的方式,利用可计算的操作在数据源上执行,当然
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Wesley13 Wesley13
3年前
Java 8 Stream API学习总结
Java8API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。StreamAPI可以极大提高Java程序员的生产力,让程序员写出高效率、干净、简洁的代码。这种风格将要处理的元素集合看作一种流,流在管道中传输,并且可以在管道的节点上进行处理,比如筛选,排序,聚合等。元素流在管道中经过中间操作(intermediateo
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Stream流处理快速上手最佳实践 | 京东物流技术团队
一引言JAVA1.8得益于Lambda所带来的函数式编程,引入了一个全新的Stream流概念Stream流式思想类似于工厂车间的“生产流水线”,Stream流不是一种数据结构,不保存数据,而是对数据进行加工处理。Stream可以看作是流水线上的一个工序。在
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这