Java学习:Stream流式思想
Stream流
Java 8 API添加了一种新的机制——Stream(流)。Stream和IO流不是一回事。
- 流式思想:像生产流水线一样,一个操作接一个操作。
- 使用Stream流的步骤:数据源→转换成流→操作1→操作2→……
- 数据源(source):可以是集合、数组等。
Stream操作有两个基础特征:
- Pipelining(流水线):流操作会返回流对象(新的对象),以便后续继续进行流操作。
- 内部迭代:不需要像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+" "));// 输出结果 : 张三 张四
}
}
Java学习:Stream流式思想的更多相关文章
- Java的Stream流式操作
前言 最近在实习,在公司看到前辈的一些代码,发现有很多值得我学习的地方,其中有一部分就是对集合使用Stream流式操作,觉得很优美且方便.所以学习一下Stream流,在这里记录一下. Stream是什 ...
- Java8新特性 Stream流式思想(二)
如何获取Stream流刚开始写博客,有一些不到位的地方,还请各位论坛大佬见谅,谢谢! package cn.com.zq.demo01.Stream.test01.Stream; import org ...
- Java8新特性 Stream流式思想(一)
遍历及过滤集合中的元素使用传统方式遍历及过滤集合中的元素package cn.com.zq.demo01.Stream.test01.Stream; import java.util.ArrayLis ...
- Java8新特性 Stream流式思想(三)
Stream接口中的常用方法 forEach()方法package cn.com.cqucc.demo02.StreamMethods.Test02.StreamMethods; import jav ...
- 阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第2节 Stream流式思想概述_3_流式思想概述
- Java流式思想和方法引用
目录 Java流式思想和方法引用 1. Stream流 1.1 概述 传统集合的多步遍历代码 Stream的更优写法 1.2 流式思想的概述 1.3 获取流 1.4 常用方法 ①逐一处理:forEac ...
- 流式思想概述和两种获取Stream流的方式
流式思想概述 整体来看,流式思想类似于工厂车间的生产流水线 当需要对多个元素进行操作(特别是多步操作)的时候,考虑到性能及便利性,我们应该首先拼好一个模型步骤方案,然后再按照方法去执行他 这张图中展示 ...
- 第46天学习打卡(四大函数式接口 Stream流式计算 ForkJoin 异步回调 JMM Volatile)
小结与扩展 池的最大的大小如何去设置! 了解:IO密集型,CPU密集型:(调优) //1.CPU密集型 几核就是几个线程 可以保持效率最高 //2.IO密集型判断你的程序中十分耗IO的线程,只要大于 ...
- Java之Stream流
Stream流的初步学习 初次学习Stream流的学习笔记,学习之前先了解一下函数式接口 概述 API是一个程序向使用者提供的一些方法,通过这些方法就能实现某些功能.所以对于流API来 说,重点是怎么 ...
随机推荐
- mac下chm文件打开乱码解决
菜单栏点击---显示---文本编码(选择编码格式)
- 数据挖掘--DBSCAN
DBSCAN:Density Based Spatial Clustering of Applications with Noise Basic idea: If an object p is den ...
- 实时人流量监测——海康威视sdk初体验
本文主要是博主使用海康SDK进行人流量统计的摸索过程,在这里简单记录一下. 查询文档,能实现人流量统计大概有两种方式,报警或者监听, 这边我选择了监听方式,NET_DVR_StartListen_V3 ...
- Linux7/Centos7用户密码安全
当Linux7/Centos7的用户root密码常用如下方式找回密码: 第一步:按e键进入内核启动页面如下: 第二步:在linux16一行LANG=zh_CN.UTF-8后面加rd.break con ...
- Python列表操作与深浅拷贝(6)——列表索引、查询、修改、扩展
列表list定义 L1 = [] L2 = [1,2,'abc'] L3 = list() L4 = list(range(5)) L5 = [1,'abc',True,None,[4,5,'abc' ...
- 17、DNS服务器
DNS domain name system 域名系统 [root@li ~]# vim /etc/nsswitch.conf hosts: files dns --涉及到 ...
- 【转】Spring全家桶
Spring框架自诞生以来一直备受开发者青睐,有人亲切的称之为:Spring 全家桶.它包括SpringMVC.SpringBoot.Spring Cloud.Spring Cloud Dataflo ...
- maven settings
maven settings 私有服settigs <?xml version="1.0" encoding="UTF-8"?> <setti ...
- idea中怎么忽略(ignore)掉 .idea等文件
idea需要下载一个专门的plugins 来ignore .idea *.iml等文件 可以在https://plugins.jetbrains.com/idea/plugin/7495–ignore ...
- 7.27 NOIP模拟测试9 随 (rand)+单(single)+题(problem)
T1 随 (rand) dp+矩阵优化+原根 看着题解懵了一晚上加一上午,最后还是看了DeepinC的博客才把暴力码出来,正解看得一知半解,循环矩阵也不太明白,先留坑吧.暴力里用二维矩阵快速幂会tle ...