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了.为此, ...
随机推荐
- Overview of Polymorphism -多态的分类
多态有类型系统衍生. 有限类型.无限类型.确定类型. Classifications Christopher Strachey (1967) introduced the concept of pol ...
- 新浪某个tab 页模仿
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- 小程序text组件内部上边距的问题
index.wxml: <view class="slogan"> <text> 建立跨文化的全球视野,做世界公民 </text> </v ...
- BRAFT EDITOR富文本编辑器
https://braft.margox.cn/demos/basic 官方文档 import React from 'react' import Uploading from '../Upl ...
- 函数(day08)
C语言里可以采用分组的方式管理语句 每个语句分组叫做一个函数 多函数程序执行的时候时间分配情况必须 遵守以下规则 .整个程序的执行时间被划分成几段,每段 时间都被分配给一个函数使用 .不同时间段不能互 ...
- java中的replaceAll方法注意事项
replaceAll和replace方法参数是不同的,replace的两个参数都是代表字符串,replaceAll的第一个参数是正则表达式 replaceAll中需要注意的特殊字符: \ == \\\ ...
- 单元测试,我在公司Web团队的分享
一.单元测试的意义 1.质量 2.效率 (短期和长远都值得)写单元测试代码,总的来说其实是更节省开发时间,更保证质量的.Controller.Service.Dao其实都可以进行测试. 通过启动 To ...
- DateTime日期格式转换,不受系统格式的影响
Application.Initialize; with FormatSettings do begin ShortDateFormat := 'yyyy-mm-dd'; LongDa ...
- [bzoj3123][Sdoi2013]森林_主席树_启发式合并
森林 bzoj-3123 Sdoi-2013 题目大意:给定一片共n个点的森林,T个操作,支持:连接两个不在一棵树上的两个点:查询一棵树上路径k小值. 注释:$1\le n,T \le 8\cdot ...
- Mycat连接数据库之后导致表名全小写的问题分析研究
初步研究:通过部署发现在Mycat中部署逻辑表表名大小写混合时,在Mycat连接后出现全变小.容易造成错误逻辑表(按混合表名创建物理表): 可能拯救的方法: 1.Linux下部署安装MySQL,默认不 ...