stream流的概述以及idea与stream
前面自己学过一些流的概念,比如IO流,用于读写本地的数据。
stream流主要是用于对集合/数组进行操作
idea现在已经很好的支持Stream流操作,在debug的时候可以很好的看到详细内容

下面以一个我的简单demo为例
1.distinct进行去重

2.filter去重之后的过滤//是一个中间操作

3.foreach打印//这个是终结操作,只有出现终结操作前面的才会生效

/*虽然参数名是随便写的,但是最好是见名知其意*/
创建流对象
1.单列集合:list.stream();
2.数组:Arrays.stream(arr);//Integer[] arr={1,2,3} 也可以使用steam.of(arr)
3.双列集合:map.entrySet.stream();//KV对使用
中间操作
过滤器:filter(a->a>2)
对流中的数据进行计算或者转换:map(a->a.getName)//举例子:把类元素变成类的姓名元素
map的匿名函数是有两个变量,第一个变量的类型是流初始化时的类型,第二类型是你想要的具体类型。上面的例子中如果a是Autor类型,那么流对象就在这时变成了string类型
去重:distinct() //这个方法是依赖object的equals方法来判断对象的,所以注意需要重写的equals对象
//这里推荐使用lombok的@hashandequals注解
排序:sorted((a,b)->a-b) //如果调用空参的sorted,流中的元素是需要实现了Comparator,通过这个接口定义一个方法,然后再通过方法进行比较
限制:list(n)
跳过:skip(n)
中间操作进行消费:peek(n)
flatmap(author->author.getBooks.stream()):返回一个流,下面的例子为:author内有一个list参数book,现在我要取出所有book使用flatmap把author流转化为了book流

stream流的概述以及idea与stream的更多相关文章
- 流思想概述-两种获取Stream流的方式
流思想概述 注意:请暂时忘记对传统IO流的固有印象 ! 整体来看,流式思想类似与工厂车间的 '生产流水线'. 当需要对多个元素进行操作(特别是多步操作)的时候,考虑到性能及便利性,我们应该首先拼好一个 ...
- Stream流中的常用方法foeEach和Stream流中的常用方法filter
延迟方法:返回值类型仍然是Stream接口自身类型的方法,因此支持链式调用.(除了中介方法外,其余方法均为延迟方法) 终结方法:返回值类型不再是Stream接口自身类型的方法,因此不再支持类似Stri ...
- 流式思想概述和两种获取Stream流的方式
流式思想概述 整体来看,流式思想类似于工厂车间的生产流水线 当需要对多个元素进行操作(特别是多步操作)的时候,考虑到性能及便利性,我们应该首先拼好一个模型步骤方案,然后再按照方法去执行他 这张图中展示 ...
- Java之Stream流
Stream流的初步学习 初次学习Stream流的学习笔记,学习之前先了解一下函数式接口 概述 API是一个程序向使用者提供的一些方法,通过这些方法就能实现某些功能.所以对于流API来 说,重点是怎么 ...
- java中的Stream流
java中的Stream流 说到Stream便容易想到I/O Stream,而实际上,谁规定"流"就一定是"IO流"呢?在Java 8中,得益于Lambda所带 ...
- JDK8新特性---stream流
项目上用到了stream流,找篇blog,转载一下,介绍下Stream流的用法. 1 流概述 流是 JDK8 新增的成员,允许以声明性方式处理数据集合,可以把 Stream 流看作是遍历数据集合的一 ...
- 【Java8新特性】面试官问我:Java8中创建Stream流有哪几种方式?
写在前面 先说点题外话:不少读者工作几年后,仍然在使用Java7之前版本的方法,对于Java8版本的新特性,甚至是Java7的新特性几乎没有接触过.真心想对这些读者说:你真的需要了解下Java8甚至以 ...
- 【Java SE进阶】Day13 Stream流、方法引用
〇.总结 Stream流的方法:forEach.filter.map.count.limit.skip.concat(结合之前的Collectors接口) 方法引用:Lambda的其他类方法体相同,如 ...
- 在stream流和byte[]中查找(搜索)指定字符串
在 stream流 和 byte[] 中查找(搜索)指定字符串 这里注重看的是两个 Search 的扩展方法,一个是 stream 类型的扩展,另一个是 byte[] 类型的扩展, 如果大家有更好的“ ...
- java8 Stream的实现原理 (从零开始实现一个stream流)
1.Stream 流的介绍 1.1 java8 stream介绍 java8新增了stream流的特性,能够让用户以函数式的方式.更为简单的操纵集合等数据结构,并实现了用户无感知的并行计算. 1.2 ...
随机推荐
- Uni-app极速入门(二) - 登录demo
需求 背景 1.进入小程序,默认页面判断用户是否已经登录,已经登录则进入首页,没有登录则进入登录页面 2.首页为tabbar,包括首页和设置页,设置页可以退出登录,回到登录页面 页面流转 graph ...
- UILable在Autolayout模式下面自动调节字体大小
一.需求 固定UILabel的宽度大小在一定范围,内容能够自动伸缩 二.实施 首先加好约束: 约束加好之后,需要设置好Autoshrink属性,包括Line break.BaseLine.以及缩小字体 ...
- 基于WebSocket的modbus通信(三)- websocket和串口
WebSocket传递ModbusTCP数据包 错误纠正 上一篇还有个错误,就是客户端写数据时服务端不需要响应,但我的服务端响应了的.我选择改客户端,把写数据时接收到的响应丢弃. PrintBytes ...
- 拼多多面试:Netty如何解决粘包问题?
粘包和拆包问题也叫做粘包和半包问题,它是指在数据传输时,接收方未能正常读取到一条完整数据的情况(只读取了部分数据,或多读取到了另一条数据的情况)就叫做粘包或拆包问题. 从严格意义上来说,粘包问题和拆包 ...
- windows隐藏文件如何查看
1.组织 2.查看 3.显示隐藏文件
- Linux设备驱动--异步通知
注:本文是<Linux设备驱动开发详解:基于最新的Linux 4.0内核 by 宋宝华 >一书学习的笔记,大部分内容为书籍中的内容. 书籍可直接在微信读书中查看:Linux设备驱动开发详解 ...
- pandas基础--基本功能
pandas含有是数据分析工作变得更快更简单的高级数据结构和操作工具,是基于numpy构建的. 本章节的代码引入pandas约定为:import pandas as pd,另外import numpy ...
- kettle从入门到精通 第二十四课 kettle 部署生产常用命令
一.设置KETTLE_HOME环境变量 假设kettle软件目录为/xxx/data-integration vi ~/.bash_profile export KETTLE_HOME=/xxx/da ...
- Linux扩展篇-shell编程(十)-shell范式
shell编程提供一个范式,有利于统一程序风格,增加可读性. 范式: ASSIGN SHELL/指定壳 DESCRIPTION/程序说明 BODY/程序体 扩展: 1.ASSIGN SHELL/指定壳 ...
- 12-Python数据库访问
在CentOS7上安装Mariadb https://blog.csdn.net/NetRookieX/article/details/104734181 常用的增删改查 show databases ...