java8 Stream 笔记
stream的定义:对一个源中的一系列元素进行聚合操作。
一系列元素:stream对一组有特定类型的元素提供了一个接口。但是stream并不真正存储元素,元素根据需求被计算出来。
源:stream可以处理任何一种数据提供源,比如集合、数组、IO资源。
聚合操作:stream支持类似sql一样的操作,常规的操作类似函数试语言,比如filter,map,reduce,find,match,sorted等。
stream还有两个特性使它和collection不同:
管道:许多stream操作会返回一个stream对象本身。这就允许所有的操作可以链接起来形成一个更大的管道。这就可以进行特定优化比如懒加载和短回路
内部迭代:和集合的显示迭代(外部迭代)相比,stream操作不需要我们手动进行迭代。
stream的操作包括如下三个东西:
一个需要进行数据查询的数据源;
一连串组成管道的中间操作;
一个执行管道并产生结果的终结操作。
stream提供了操作分为如下四类:
过滤:
filter (Predicate): 使用一个谓词java.util.function.Predicate作为参数返回一个满足谓词条件的stream
distinct: 返回一个没有重复元素的stream(根据equals的实现)
limit(n): 返回一个不超过给定长度的stream
skip(n):返回一个忽略前n个的stream
查找和匹配:
一个通常的数据处理模式是判断一些元素是否满足给定的属性,可以使用anyMatch, allMatch, noneMatch操作来帮助你实现
映射:
stream支持map方法,map使用一个函数作为一个参数,你可以使用map从stream的一个元素里提取信息。
java8 Stream 笔记的更多相关文章
- Java8学习笔记----Lambda表达式 (转)
Java8学习笔记----Lambda表达式 天锦 2014-03-24 16:43:30 发表于:ATA之家 本文主要记录自己学习Java8的历程,方便大家一起探讨和自己的备忘.因为本人 ...
- Java8学习笔记目录
Java8学习笔记(一)--Lambda表达式 Java8学习笔记(二)--三个预定义函数接口 Java8学习笔记(三)--方法引入 Java8学习笔记(四)--接口增强 Java8学习笔记(五)-- ...
- Java8学习笔记(八)--方法引入的补充
在Java8学习笔记(三)--方法引入中,简要总结了方法引入时的使用规则,但不够完善.这里补充下几种情况: 从形参到实例方法的实参 示例 public class Example { static L ...
- java List递归排序,传统方式和java8 Stream优化递归,无序的列表按照父级关系进行排序(两种排序类型)
当有一个List列表是无序的,List中的数据有parentid进行关联,通过java排序成两种排序类型: 所用的测试列表最顶级无parentid,若为特殊值,修改下判断方法即可. 第一种排序:按照树 ...
- java8 Stream的实现原理 (从零开始实现一个stream流)
1.Stream 流的介绍 1.1 java8 stream介绍 java8新增了stream流的特性,能够让用户以函数式的方式.更为简单的操纵集合等数据结构,并实现了用户无感知的并行计算. 1.2 ...
- 简洁又快速地处理集合——Java8 Stream(下)
上一篇文章我讲解 Stream 流的基本原理,以及它与集合的区别关系,讲了那么多抽象的,本篇文章我们开始实战,讲解流的各个方法以及各种操作 没有看过上篇文章的可以先点击进去学习一下 简洁又快速地处理集 ...
- 简洁又快速地处理集合——Java8 Stream(上)
Java 8 发布至今也已经好几年过去,如今 Java 也已经向 11 迈去,但是 Java 8 作出的改变可以说是革命性的,影响足够深远,学习 Java 8 应该是 Java 开发者的必修课. 今天 ...
- Java8 Stream性能如何及评测工具推荐
作为技术人员,学习新知识是基本功课.有些知识是不得不学,有些知识是学了之后如虎添翼,Java8的Stream就是兼具两者的知识.不学看不懂,学了写起代码来如虎添翼. 在上篇<Java8 Stre ...
- Java8 Stream新特性详解及实战
Java8 Stream新特性详解及实战 背景介绍 在阅读Spring Boot源代码时,发现Java 8的新特性已经被广泛使用,如果再不学习Java8的新特性并灵活应用,你可能真的要out了.为此, ...
随机推荐
- alert弹出框 弹出窗口 ----sweetAlert
推荐一款好用的alert,下面地址是demo,很直观的看到效果,wap可以使用 http://www.dglives.com/demo/sweetalert-master/example/ < ...
- PAT_A1145#Hashing - Average Search Time
Source: PAT A1145 Hashing - Average Search Time (25 分) Description: The task of this problem is simp ...
- Idea 方法注释
Idea 方法注释 http://blog.csdn.net/u014044812/article/details/76577479 http://blog.csdn.net/leixingbang1 ...
- 记一次惊心的网站 TCP 队列问题排查经历
https://blog.csdn.net/chenlycly/article/details/80868990 http://www.mytju.com/classcode/news_readnew ...
- cxdbImage以及图像显示
把pdf以及图像存入数据库,然后根据需要显示出来.在处理的过程中,不同类型的图像格式有其不同的类,如果这个概念不清楚,就会绕一个很大的圈子. MyJPEG : TJPEGImage ; mypng : ...
- UDP bind() IP和prot
http://blog.csdn.net/qq_28171461/article/details/69523604
- asp.net常用容器
autofac就是ioc的第三方的IOC容器 unity也是IOC容器 掌握这两个容器就可以了,非常简单
- Spring MVC-表单(Form)标签-多行文本框(TextArea)示例(转载实践)
以下内容翻译自:https://www.tutorialspoint.com/springmvc/springmvc_textarea.htm 说明:示例基于Spring MVC 4.1.6. 以下示 ...
- OSX: 安装打印机的有用命令行
事实上非常easy.就是有用lpadmin命令,以下给出一个样例: printername="YOUR_PRINTER_NAME" location="LOCATION ...
- Python面向切面编程-语法层面和functools模块
1,Python语法层面对面向切面编程的支持(方法名装饰后改变为log) __author__ = 'Administrator' import time def log(func): def wra ...