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流操作的更多相关文章

  1. JDK8新特性---stream流

    项目上用到了stream流,找篇blog,转载一下,介绍下Stream流的用法. 1 流概述  流是 JDK8 新增的成员,允许以声明性方式处理数据集合,可以把 Stream 流看作是遍历数据集合的一 ...

  2. JDK新特性关于流操作部分

    // array 工具类 可以用来快捷的将数组转化为list List<String> strings = Arrays.asList("zhongguo", &quo ...

  3. 这可能是史上最好的 Java8 新特性 Stream 流教程

    本文翻译自 https://winterbe.com/posts/2014/07/31/java8-stream-tutorial-examples/ 作者: @Winterbe 欢迎关注个人微信公众 ...

  4. Java8 新特性 Stream 短路终端操作

    短路终端操作 Java8 新特性 Stream 练习实例 传入一个谓词,返回传为boolean,如果符合条件,则直接结束流. 匹配所有 allMatch 任意匹配 anymMatch 不匹配 none ...

  5. JDK8新特性(二) 流式编程Stream

    流式编程是1.8中的新特性,基于常用的四种函数式接口以及Lambda表达式对集合类数据进行类似流水线一般的操作 流式编程分为大概三个步骤:获取流 → 操作流 → 返回操作结果 流的获取方式 这里先了解 ...

  6. jdk8新特性-stream

    一.什么是流stream 1.可理解为高级版本的 Iterator 不是集合元素,它不是数据结构并不保存数据,它是有关算法和计算的. 2.单向,不可往复 数据只能遍历一次,遍历过一次后即用尽了,就好比 ...

  7. Java1.8新特性 - Stream流式算法

    一. 流式处理简介   在我接触到java8流式数据处理的时候,我的第一感觉是流式处理让集合操作变得简洁了许多,通常我们需要多行代码才能完成的操作,借助于流式处理可以在一行中实现.比如我们希望对一个包 ...

  8. 再来看看Java的新特性——Stream流

    半年前开始试着使用Java的新特性,给我印象最深的就是Stream流和Optional.其中Stream提高了看法效率,让代码看起来十分清爽. 为什么要使用流? 摘要中已经说明了,为了提高开发效率.流 ...

  9. java8 新特性Stream流的应用

    作为一个合格的程序员,如何让代码更简洁明了,提升编码速度尼. 今天跟着我一起来学习下java 8  stream 流的应用吧. 废话不多说,直入正题. 考虑以下业务场景,有四个人员信息,我们需要根据性 ...

  10. Java8 新特性 —— Stream 流式编程

    本文部分摘自 On Java 8 流概述 集合优化了对象的存储,大多数情况下,我们将对象存储在集合是为了处理他们.使用流可以帮助我们处理对象,无需迭代集合中的元素,即可直接提取和操作元素,并添加了很多 ...

随机推荐

  1. 【Boost】CMake中引用Boost库

    概述 在macOS开发时常常使用Boost库,若项目使用CMake进行组织管理和编译,需要掌握在CMake中实现Boost库的引用的基本语法.本片博客结合自己在实际使用过程中的经验进行总结,以期回顾和 ...

  2. Java中的日期计算

    Java中的日期计算:详细指南 日期计算是Java编程中的一个常见任务,无论是在日常应用开发还是在企业级系统中.本文详细介绍了如何在Java中进行日期计算,包括添加天数.计算两个日期之间的差异以及格式 ...

  3. Ubuntu22.04上使用systemctl命令配置开机自启动服务、脚本、命令

    systemctl介绍 systemctl是Linux系统上用于管理系统服务(systemd单元)的命令行工具.它可以用来启动.停止.重启.禁用.启用.查询和管理系统服务的状态. 以下是一些常用的sy ...

  4. Fedora 设置 core 文件路径

    sudo vim /etc/sysctl.conf 输入 kernel.core_pattern=core.%p sudo /lib/systemd/systemd-sysctl 使修改生效 cat ...

  5. linux 对子用户配置java 环境变量

    转载请注明出处: 若服务器安装 jdk 时用的是root 用户,则root 用户登录服务器可以直接获取Java环境. 当切换到其他子用户时,则会发现环境不存在,命令不存在等. 解决方案: 1. 先切换 ...

  6. 基于java+springboot的租房网站、房屋出租管理系统

    该系统是基于java+springboot+vue开发的租房管理系统.是给师弟开发的课程作业.学习过程中,遇到问题可以留言咨询. 演示地址 前台地址: http://zf.gitapp.cn 后台地址 ...

  7. 【面试题精讲】你了解String.intern方法吗

    有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top 首发博客地址 系列文章地址 String.intern 方法是 Java 中 ...

  8. [转帖]Oracle、SQL Server、MySQL数据类型对比

    Oracle.SQL Server.MySQL数据类型对比 - 知乎 (zhihu.com) 1,标准SQL数据类型 BINARY 每个字符占一个字节 任何类型的数据都可存储在这种类型的字段中.不需数 ...

  9. [转帖]谈谈对K8S CNI、CRI和CSI插件的理解

    K8S的设计初衷就是支持可插拔架构,解决PaaS平台不好用.不能用.需要定制化等问题,K8S集成了插件.附加组件.服务和接口来扩展平台的核心功能.附加组件被定义为与环境的其他部分无缝集成的组件,提供类 ...

  10. Rsync的简单使用

    Rsync的简单使用 需求 一个运行很久的系统里面可能包含了非常多的垃圾文件. 但是又不可能随便删除, 很多垃圾可能有某些奇葩的用法. 有时候新建一个应用复制文件的话比较浪费磁盘和带宽. 所以这里简单 ...