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 流概述 集合优化了对象的存储,大多数情况下,我们将对象存储在集合是为了处理他们.使用流可以帮助我们处理对象,无需迭代集合中的元素,即可直接提取和操作元素,并添加了很多 ...
随机推荐
- 【JAVA基础】List处理
List处理 List使用Lists.partition()分片 public static <T> List<List<T>> partition(List< ...
- 用 three.js 绘制三维带箭头线 (线内箭头)
在LineMaterial.js基础上修改的ArrowLineMaterial.js代码: /** * @author WestLangley / http://github.com/WestLang ...
- 在Windows上D盘上安装Docker
Reference https://www.willh.cn/articles/2022/07/13/1657676401964.html Docker默认安装在C盘: "C:\Progra ...
- Linux 下 Docker 操作遭到守护程序套接字时访问权限被拒绝
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker. ...
- 题解 [HDU6747] Rotate 期望 + 逆元
来源:2020 年百度之星·程序设计大赛 - 初赛一 一个圈,从内到外一共被分成了 \(n\) 个环,中间是空的. 我们把从外到内第 \(i\) 层环平分成 \(a[i]\) 份,其中 \(a[i]\ ...
- mysql 使用 trim去不掉空格 解决
使用mysql8.0时 发现 有几个空字符串怎么也过滤不掉,使用 is not null.trim()<>''.length()>=1都不行,最后查了一些资料说 trim只能去除半角 ...
- vue学习笔记 十一、计算属性介绍
系列导航 vue学习笔记 一.环境搭建 vue学习笔记 二.环境搭建+项目创建 vue学习笔记 三.文件和目录结构 vue学习笔记 四.定义组件(组件基本结构) vue学习笔记 五.创建子组件实例 v ...
- 【调试】ftrace(三)trace-cmd和kernelshark
之前使用ftrace的时候需要一系列的配置,使用起来有点繁琐,这里推荐一个ftrace的一个前端工具,它就是trace-cmd trace-cmd安装教程 安装trace-cmd及其依赖库 git c ...
- element-ui 实现行合并-亲测有效!
目标样式: 首先先来看下我们拿到的返回数据: scheduleList: [ { date: '第一天', journey: '报道', lecturer: '', }, { date: '第二天', ...
- Invalid options object. Sass Loader has been initialized using an options obj
https://blog.csdn.net/liwan09/article/details/106981239