JDK8新特性Stream流操作
1 package stream;
2
3 import java.util.ArrayList;
4 import java.util.function.Function;
5 import java.util.stream.Stream;
6
7 public class test {
8 public static void main(String[] args) {
9 ArrayList<String> one = new ArrayList<>();
10 one.add("迪丽热巴");
11 one.add("宋远桥");
12 one.add("苏星河");
13 one.add("石破天");
14 one.add("石中玉");
15 one.add("老子");
16 one.add("庄子");
17 one.add("洪七公");
18 //第二支队伍
19 ArrayList<String> two = new ArrayList<>();
20 two.add("古力娜扎");
21 two.add("张无忌");
22 two.add("赵丽颖");
23 two.add("张三丰");
24 two.add("尼古拉斯赵四");
25 two.add("张天爱");
26 two.add("张二狗");
27
28 //1. 第一个队伍只要名字为3个字的成员姓名;存储到一个新集合中。
29 Stream<String> stream = one.stream();
30 Stream<String> stringStream = stream.filter((String name) -> name.length() == 3);
31 // stringStream.forEach((String name)-> System.out.println(name));
32
33 //2. 第一个队伍筛选之后只要前3个人;存储到一个新集合中。
34 Stream<String> limit = stringStream.limit(3);
35 // limit.forEach((String name)-> System.out.println(name));
36
37 //3. 第二个队伍只要姓张的成员姓名;存储到一个新集合中。
38 Stream<String> stream1 = two.stream();
39 Stream<String> zhanglist = stream1.filter((String name) -> name.startsWith("张"));
40 // zhanglist.forEach((String name)-> System.out.println(name));
41
42 //4. 第二个队伍筛选之后不要前2个人;存储到一个新集合中。
43 Stream<String> skip = zhanglist.skip(2);
44 // skip.forEach((String name)-> System.out.println(name));
45
46 //5. 将两个队伍合并为一个队伍;存储到一个新集合中。
47 Stream<String> concat = Stream.concat(limit, skip);
48 // concat.forEach((String name)-> System.out.println(name));
49
50 //6. 根据姓名创建 Person 对象;存储到一个新集合中。
51 Stream<Person> personStream = concat.map((String name) -> new Person(name));
52
53 //7. 打印整个队伍的Person对象信息。
54 personStream.forEach((Person person) -> System.out.println(person));
55 }
56
57 }
# 注:代码中注释部分 是由于如果直接打印 ,该流对象就会失效,后续操作无法进行。
创建流对象的两种方式
1 java.util.stream.Stream<T>是Java 8新加入的最常用的流接口。(这并不是一个函数式接口。)
2 获取一个流非常简单,有以下几种常用的方式:
3 - 所有的Collection集合都可以通过stream默认方法获取流;
4 default Stream<E> stream()
5 - Stream接口的静态方法of可以获取数组对应的流。
6 static <T> Stream<T> of(T... values)
7 参数是一个可变参数,那么我们就可以传递一个数组
forEach()方法和count()方法属于终结方法,返回的对象是最终结果。像filter()、map()、concat()、skip()、limit()等返回的仍然是stream对象。而且filter()、map()、concat()、skip()、limit()
这些方法内部可以使用lambda表达式。
JDK8新特性Stream流操作的更多相关文章
- JDK8新特性---stream流
项目上用到了stream流,找篇blog,转载一下,介绍下Stream流的用法. 1 流概述 流是 JDK8 新增的成员,允许以声明性方式处理数据集合,可以把 Stream 流看作是遍历数据集合的一 ...
- JDK新特性关于流操作部分
// array 工具类 可以用来快捷的将数组转化为list List<String> strings = Arrays.asList("zhongguo", &quo ...
- 这可能是史上最好的 Java8 新特性 Stream 流教程
本文翻译自 https://winterbe.com/posts/2014/07/31/java8-stream-tutorial-examples/ 作者: @Winterbe 欢迎关注个人微信公众 ...
- Java8 新特性 Stream 短路终端操作
短路终端操作 Java8 新特性 Stream 练习实例 传入一个谓词,返回传为boolean,如果符合条件,则直接结束流. 匹配所有 allMatch 任意匹配 anymMatch 不匹配 none ...
- JDK8新特性(二) 流式编程Stream
流式编程是1.8中的新特性,基于常用的四种函数式接口以及Lambda表达式对集合类数据进行类似流水线一般的操作 流式编程分为大概三个步骤:获取流 → 操作流 → 返回操作结果 流的获取方式 这里先了解 ...
- jdk8新特性-stream
一.什么是流stream 1.可理解为高级版本的 Iterator 不是集合元素,它不是数据结构并不保存数据,它是有关算法和计算的. 2.单向,不可往复 数据只能遍历一次,遍历过一次后即用尽了,就好比 ...
- Java1.8新特性 - Stream流式算法
一. 流式处理简介 在我接触到java8流式数据处理的时候,我的第一感觉是流式处理让集合操作变得简洁了许多,通常我们需要多行代码才能完成的操作,借助于流式处理可以在一行中实现.比如我们希望对一个包 ...
- 再来看看Java的新特性——Stream流
半年前开始试着使用Java的新特性,给我印象最深的就是Stream流和Optional.其中Stream提高了看法效率,让代码看起来十分清爽. 为什么要使用流? 摘要中已经说明了,为了提高开发效率.流 ...
- java8 新特性Stream流的应用
作为一个合格的程序员,如何让代码更简洁明了,提升编码速度尼. 今天跟着我一起来学习下java 8 stream 流的应用吧. 废话不多说,直入正题. 考虑以下业务场景,有四个人员信息,我们需要根据性 ...
- Java8 新特性 —— Stream 流式编程
本文部分摘自 On Java 8 流概述 集合优化了对象的存储,大多数情况下,我们将对象存储在集合是为了处理他们.使用流可以帮助我们处理对象,无需迭代集合中的元素,即可直接提取和操作元素,并添加了很多 ...
随机推荐
- element-china-area-data
https://blog.csdn.net/xiejnpeng/article/details/111400199
- python进阶(8)--测试函数与类
一.测试函数(unittest) 1.源文件方法(name_function.py): def get_formatted_name(first,last): """生成 ...
- GCC 指定运行期动态链接库搜索路径
链接器 ld 的 -rpath=dir 选项可以指定运行期 so 文件的搜索路径. GCC 的 -Wl,option 选项可以传递选项给链接器 ld. 所以组合起来,可以直接使用 -Wl,-rpath ...
- xshell配置隧道转移规则
钢铁知识库,一个学习python爬虫.数据分析的知识库.人生苦短,快用python. xshell是什么 通俗点说就是一款强大ssh远程软件,可以方便运维人员对服务器进行管理操作,功能很多朋友们自行探 ...
- 例2.6 设计一个高效的算法,从顺序表L中删除所有值为x的元素,要求时间复杂度为0(n)空间复杂度为0(1)。
1.题目 例2.6 设计一个高效的算法,从顺序表L中删除所有值为x的元素,要求时间复杂度为0(n)空间复杂度为0(1). 2.算法思想 3.代码 void DeleteX(SeqList LA, Se ...
- 【中介者模式(Mediator)】使用Java实现中介者模式
引言 中介者,何为中介者,顾名思义就是我们的在处理A和B之间的关系的时候,引入一个中间人,来处理这两者之间的关系,例如生活中我们需要去租房,买房,都会有中介,来处理房东和租客之间的协调关系,这个就是中 ...
- 【面试题精讲】如何使用Stream的聚合功能
有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top 首发博客地址 系列文章地址 求和(Sum): List<Integer ...
- [转帖]CPU写入512bit要多久:从AVX到NEON
https://zhuanlan.zhihu.com/p/677124882 写这篇文章的原因是有个项目需要降低延迟,希望能更快地把512bit的数据从内存搬进PCIe设备.原先的做法是软件写寄存器通 ...
- Redis和Springboot在Windows上面设置开机启动的方法
Redis和Springboot在Windows上面设置开机启动的方法 背景 同事遇到一个问题 Windows 晚上自动更新服务 然后第二天 Springboot开发的程序没有启动起来. 所以基于此想 ...
- [转帖]Oracle的审计
AUDIT_TRAIL 初始化参数AUDIT_TRAIL用于控制数据库审计,默认值为none. 参数类型: String 默认值: none 允许动态修改: 否 基本参数: 否 语法: AUDIT_T ...