Java学习:Stream流式思想

Stream流

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

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

Stream操作有两个基础特征:

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

遍历及过滤集合中的元素

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

1 1 import java.util.ArrayList; 2 2 import java.util.List; 3 3 4 4 /* 5 5 * 使用 传统方式 遍历 及 过滤 集合 6 6 * 需求 : 7 7 * 1、第一步过滤,只需要 以 “张” 开头的名字 8 8 * 2、第二步过滤只需要 ,名字长度为 2 的名字 9 9 * */ 1010 public class Test01Stream { 1111 1212 public static void main(String[] args) { 1313 // 创建一个集合 List , 存储姓名 并根据要求 进行过滤 1414 List<String> nameList = new ArrayList<>(); 1515 nameList.add("张三"); 1616 nameList.add("李四"); 1717 nameList.add("王五"); 1818 nameList.add("赵六"); 1919 nameList.add("田七"); 2020 nameList.add("王八"); 2121 nameList.add("张四"); 2222 nameList.add("张三丰"); 2323 2424 // 使用传统方式进行过滤 2525 2626 // 1、第一步过滤,只需要 以张开头的名字 2727 2828 // 需要 创建一个新的集合 对 第一次过滤之后的 姓名 进行存储 2929 List<String> listA = new ArrayList<>(); 3030 for (String s : nameList) { //使用增强 for 循环 对 集合进行遍历 3131 if (s.startsWith("张")) { 3232 listA.add(s);//将过滤后的结果 添加到新的集合中 3333 } 3434 } 3535 3636 List<String> listB = new ArrayList<>(); 3737 for (String s : listA) { 3838 if (s.length() == 2) { 3939 listB.add(s); 4040 } 4141 } 4242 4343 for (String s : listB) { 4444 System.out.print(s + " ");// 最终过滤结果 张三 张四 4545 } 4646 } 4747 }

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

1 1 import java.util.ArrayList; 2 2 import java.util.List; 3 3 4 4 /* 5 5 * 使用Stream流的方式 遍历 并 过滤集合 6 6 * 需求 : 7 7 1、第一步过滤,只需要 以 “张” 开头的名字 8 8 2、第二步过滤只需要 ,名字长度为 2 的名字 9 9 * */ 1010 public class Test02Stream { 1111 1212 public static void main(String[] args) { 1313 // 创建一个集合 List , 存储姓名 并根据要求 进行过滤 1414 List<String> nameList = new ArrayList<>(); 1515 nameList.add("张三"); 1616 nameList.add("李四"); 1717 nameList.add("王五"); 1818 nameList.add("赵六"); 1919 nameList.add("田七"); 2020 nameList.add("王八"); 2121 nameList.add("张四"); 2222 nameList.add("张三丰"); 2323 2424 // 使用 Stream 流的方式 ,对集合进行遍历,并过滤 2525 // 1、第一步过滤,只需要 以 “张” 开头的名字 2626 2727 // 将集合转换为 Stream流, 直接调用Collection接口的一个默认方法 stream 2828 nameList.stream().filter(s->s.startsWith("张")) 2929 .filter(s->s.length()==2) 3030 .forEach(s-> System.out.print(s+" "));// 输出结果 : 张三 张四 3131 } 3232 }
点赞
收藏

评论区

加载中...

相关推荐

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

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

Java Stream

1Stream简介Stream是数据渠道,用于操作数据源(集合,数组等)所生成得元素序列。而集合讲得是数据,流讲得是计算。注意:Stream自己不会存储元素。Stream不会改变源对象。相反,它会返回一个持有结果得新StreamStream操作时延迟执行得,这意味着它们会等到需要结果时才执

Java学习:Stream流式思想 - HelloWorld