Stream流

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

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

Stream操作有两个基础特征:

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

遍历及过滤集合中的元素

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

 import java.util.ArrayList;
import java.util.List; /*
* 使用 传统方式 遍历 及 过滤 集合
* 需求 :
* 1、第一步过滤,只需要 以 “张” 开头的名字
* 2、第二步过滤只需要 ,名字长度为 2 的名字
* */
public class Test01Stream { public static void main(String[] args) {
// 创建一个集合 List , 存储姓名 并根据要求 进行过滤
List<String> nameList = new ArrayList<>();
nameList.add("张三");
nameList.add("李四");
nameList.add("王五");
nameList.add("赵六");
nameList.add("田七");
nameList.add("王八");
nameList.add("张四");
nameList.add("张三丰"); // 使用传统方式进行过滤 // 1、第一步过滤,只需要 以张开头的名字 // 需要 创建一个新的集合 对 第一次过滤之后的 姓名 进行存储
List<String> listA = new ArrayList<>();
for (String s : nameList) { //使用增强 for 循环 对 集合进行遍历
if (s.startsWith("张")) {
listA.add(s);//将过滤后的结果 添加到新的集合中
}
} List<String> listB = new ArrayList<>();
for (String s : listA) {
if (s.length() == 2) {
listB.add(s);
}
} for (String s : listB) {
System.out.print(s + " ");// 最终过滤结果 张三 张四
}
}
}

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

 import java.util.ArrayList;
import java.util.List; /*
* 使用Stream流的方式 遍历 并 过滤集合
* 需求 :
1、第一步过滤,只需要 以 “张” 开头的名字
2、第二步过滤只需要 ,名字长度为 2 的名字
* */
public class Test02Stream { public static void main(String[] args) {
// 创建一个集合 List , 存储姓名 并根据要求 进行过滤
List<String> nameList = new ArrayList<>();
nameList.add("张三");
nameList.add("李四");
nameList.add("王五");
nameList.add("赵六");
nameList.add("田七");
nameList.add("王八");
nameList.add("张四");
nameList.add("张三丰"); // 使用 Stream 流的方式 ,对集合进行遍历,并过滤
// 1、第一步过滤,只需要 以 “张” 开头的名字 // 将集合转换为 Stream流, 直接调用Collection接口的一个默认方法 stream
nameList.stream().filter(s->s.startsWith("张"))
.filter(s->s.length()==2)
.forEach(s-> System.out.print(s+" "));// 输出结果 : 张三 张四
}
}

最新文章

  1. java多线程(精华版)
  2. hadoop2.6.2分布式环境搭建
  3. cocos2dx在ubuntu下配置声音引擎
  4. mongoVUE1.5.3 破解方法
  5. Android: Intent实现活动之间的交互
  6. Http 状态码详解
  7. Linux下搭建Oracle11g RAC(5)----配置ASM磁盘
  8. 【Android - 框架】之ORMLite的使用
  9. JAva Collections类方法详解
  10. iomanip
  11. /etc/group文件详解
  12. 【机器学习PAI实践二】人口普查统计
  13. 微信小程序开发之常见BUG
  14. DG环境的日常巡检
  15. PA模块报错-实际返回的行数超出请求的行数(分析标准FORM报错解决思路)
  16. Linux-centos7下python3 环境设置
  17. Linux c获取任意路径的硬盘使用情况
  18. 应用MySQL(开启远程登录权限)
  19. JavaScript Json(转)
  20. ajax一次获取整个表单的数据

热门文章

  1. 【Qt编程】基于QWT的曲线绘制及图例显示操作——有样点的实现功能
  2. body的背景
  3. 电信NBIOT 5 - NB73模块下行测试(自己平台-电线平台-NB73)
  4. 当MySQL数据库遇到Syn Flooding
  5. 2.1 Scala语言概述
  6. JS中key-value存取
  7. 201871010107-公海瑜《面向对象程序设计(java)》第十周学习总结
  8. 201871010108-高文利《面向对象程序设计(java)》第十三周学习总结
  9. android SDK安装Failed to fetch URL http://dl-ssl.google.com/android/repository/addons_list-1.xml出错 解决方案
  10. zz图像、神经网络优化利器:了解Halide