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 ...
随机推荐
- Tron_CTF2024新生赛 MISC
猿神?岂洞!! 题目: 腿短的好奇怪,难道有东西? 密码在这,好像有电!.txt 0362014324221316063736154275 还有一个压缩包. 我的解答: 036201432422131 ...
- 面试官:说说Netty的核心组件?
Netty 核心组件是指 Netty 在执行过程中所涉及到的重要概念,这些核心组件共同组成了 Netty 框架,使 Netty 框架能够正常的运行. Netty 核心组件包含以下内容: 启动器 Boo ...
- C语言常用数学函数
目录 C语言常用数学函数(头文件#include "math.h") abs()函数 labs()函数 fabs()函数 floor()函数 floorf() floorl() c ...
- cdn静态资源加速
阿里云cdn产品 https://www.aliyun.com/product/cdn CDN通过广泛的网络节点分布,提供快速.稳定.安全.可编程的全球内容分发加速服务,支持将网站.音视频.下载等内容 ...
- Spring Boot 使用 拦截器 实现 token 验证
Spring Boot 使用 拦截器 实现 token 验证 整体思路:1.写一个工具类封装生成.校验和解析 token 的方法:2.在注册和登录时生成 token ,生成的 token 存入 red ...
- SQL索引优化,菜单列表优化
SQL索引优化,菜单列表优化 现象:在系统中几个数据量大的列表页面,首次进入页面未增加筛选条件,导致进入的列表查询速度非常慢.分析:通过SQL查看,是做了count求和查询,然后根据总的记录数来做分页 ...
- Mysql行转列,列转行 WITH ROLLUP 统计
Mysql行转列,列转行 WITH ROLLUP 统计 DROP TABLE IF EXISTS tb_score; CREATE TABLE tb_score( id INT(11) NOT NUL ...
- java elasticsearch-rest-high-level-client 根据歌名搜索,创建索引,根据索引ID搜索
1.pom 导入jar <dependency> <groupId>org.elasticsearch.client</groupId> <artifactI ...
- notonlysuccess大神的线段树完全版
在大神的网站进不去的时候可以过来看看,另外道客巴巴有个排版比较好的文档,外观派可以去看看http://www.doc88.com/p-2728103209174.html 很早前写的那篇线段树专辑至今 ...
- python之基本类型
1 *********************************pyhton基本数据类型***************** 2 数字 int 3 ******************* 4 - ...