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来 说,重点是怎么 ...
随机推荐
- jvm默认的并行垃圾回收器和G1垃圾回收器性能对比
http://www.importnew.com/13827.html 参数如下: JAVA_OPTS="-server -Xms1024m -Xmx1024m -Xss256k -XX:M ...
- 英语chrismatite黄蜡石chrismatite单词
黄蜡石chrismatite的原岩均为硅质岩,各种原岩受到构造变动.火山活动.热液作用等影响,产生复杂的物理和化学变化,包括重结晶.热变质等,导致矿物成分及结构构造的变化,后受构造变动的影响,岩石露出 ...
- redis 配置及编写启动脚本
#!/bin/sh # # Simple Redis init.d script conceived to work on Linux systems # as it does use of the ...
- Spring登录实例
Spring登录实例 项目结构 首先看一下整个项目的目录结构,如下: 导入Jar包 工欲善必先利其器,导入一下Jar包 配置文件 web.xml 配置 web.xml配置文件,如下: xmlns:xs ...
- Python:tarxjb简单、安全文件拷贝、传输
tarxjb 简单.安全文件拷贝.传输 描述 通过python paramiko库实现简易ssh.sftp执行操作,从而实现文件的远程传输 Github 优点: 可靠传输,文件不易受损 安全传输,避免 ...
- 《SQL Server 2008 R2》 收缩数据库日志文件
USE [master] GO /****** Object: StoredProcedure [dbo].[pro_Shrink_Log] Script Date: 2019/8/16 16:56: ...
- Java八大排序之希尔(Shell)排序
希尔排序(Shell's Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本.希尔排序是非稳定排序算法.该 ...
- ensorFlow的安装
WIN7 64位系统 参考了 https://blog.csdn.net/appleyuchi/article/details/71036785 尝试了各种版本,,最后必须python安装3.60版 ...
- Codeforces 1278F: Cards
题目传送门:CF1278F. 题意简述: 有 \(n\) 个独立随机变量 \(x_i\),每个随机变量都有 \(p = 1/m\) 的概率取 \(1\),有 \((1-p)\) 的概率取 \(0\). ...
- RegxUtils正则表达式工具类
public class RegxUtils { //------------------常量定义 /** * Email正则表达式="^([a-z0-9A-Z]+[-|\\.]?)+[a- ...