Java stream 流
Java stream 流
中间操作
1、filter
作用:将流中的元素,基于自定义的比较器进行去重
方法定义
Stream<T> filter(Predicate<? super T> predicate);
说明:这个方法,传入一个Predicate的函数接口,关于Predicate函数接口定义,可以查看《JAVA8 Predicate接口》,这个接口传入一个泛型参数T,做完操作之后,返回一个boolean值;filter方法的作用,是对这个boolean做判断,过滤出返回值为true的对象。
2、map
作用:可以改变返回值类型,例如假定流中的元素为对象,可以将对象的的某一属性作为返回值,这时流中的元素就为该返回值了
方法定义:
<R> Stream<R> map(Function<? super T, ? extends R> mapper);
说明:这个方法传入一个Function的函数式接口,接口定义可以查看《JAVA8 Function接口》,这个接口,接收一个泛型T,返回泛型R,map函数的定义,返回的流,表示的泛型是R对象,这个表示,调用这个函数后,可以改变返回的类型,先看下面的案例
3、flatMap
没看懂 附上链接
4、distinct
作用:基于hashCode()和equals()方法进行去重;
方法定义
Stream<T> distinct();
说明:
5、sorted
作用:对流中是元素进行排序(首先可以使用filter过滤掉null值,避免空指针)
方法定义:
//排序
Stream<T> sorted();
//根据属性排序
Stream<T> sorted(Comparator<? super T> comparator);
说明:
对于sorted(),使用时要保证流中的元素实现comparable接口,因为默认的排序方式是基于自然排序进行的,也可以使用sorted(Comparator.reverseOrder())对自然序进行逆序;
对于sorted(Comparator<? super T> comparator),可以使用sorted(Comparator.comparing(方法引用))来自定义比较器,同样进行逆序的方式为sorted(Comparator.comparing(方法引用).reversed()) 。
6、peek
作用:对流中的元素进行处理,无返回值,返回的元素还是之前流中的元素,变化的是元素中的某一属性;而map会改变返回值
方法定义:
Stream<T> peek(Consumer<? super T> action);
说明:peek接收一个没有返回值的λ表达式,可以做一些输出,外部处理等。map接收一个有返回值的λ表达式,之后Stream的泛型类型将转换为map参数λ表达式返回的类型
7、limit
作用:截取前n个元素
方法定义:
//截断--取先maxSize个对象
Stream<T> limit(long n);
说明:n不能为负数,可以超出流长度
8、skip
作用: skip(long n) 方法跳过前 n (非负)个元素,返回剩下的流,有可能为空流。
方法定义:
Stream<T> limit(long n);
说明:跳过前n个元素(第N个也不取,包括第n个)返回剩下的元素,n不能为负数,也可能返回空流;
终端操作
1、
void forEach(Consumer<? super T> action);
2、
void forEachOrdered(Consumer<? super T> action);
public final <A> A[] toArray(IntFunction<A[]> generator)
boolean anyMatch(Predicate<? super T> predicate);
boolean allMatch(Predicate<? super T> predicate);
boolean noneMatch(Predicate<? super T> predicate);
long count();
T reduce(T identity, BinaryOperator<T> accumulator);
Optional<T> reduce(BinaryOperator<T> accumulator);
<U> U reduce(U identity, BiFunction<U, ? super T, U> accumulator, BinaryOperator<U> combiner);
<R> R collect(Supplier<R> supplier,BiConsumer<R, ? super T> accumulator,BiConsumer<R, R> combiner);
<R, A> R collect(Collector<? super T, A, R> collector);
Java stream 流的更多相关文章
- 一文带你入门Java Stream流,太强了
两个星期以前,就有读者强烈要求我写一篇 Java Stream 流的文章,我说市面上不是已经有很多了吗,结果你猜他怎么说:"就想看你写的啊!"你看你看,多么苍白的喜欢啊.那就&qu ...
- 全面吃透JAVA Stream流操作,让代码更加的优雅
全面吃透JAVA Stream流操作,让代码更加的优雅 在JAVA中,涉及到对数组.Collection等集合类中的元素进行操作的时候,通常会通过循环的方式进行逐个处理,或者使用Stream的方式进行 ...
- Java Stream 流如何进行合并操作
1. 前言 Java Stream Api 提供了很多有用的 Api 让我们很方便将集合或者多个同类型的元素转换为流进行操作.今天我们来看看如何合并 Stream 流. 2. Stream 流的合并 ...
- Java Stream 流(JDK 8 新特性)
什么是 Steam Java 8 中新增了 Stream(流)来简化集合类的使用,Stream 本质上是个接口,接口中定义了很多对 Stream 对象的操作. 我们知道,Java 中 List 和 S ...
- Java | Stream流、泛型、多线程 | 整理自用
1.lambda 表达式 lambda 的延迟执行 可以对程序进行优化,尤其是使用 if {} else {} 条件判断,先判断条件是否成立,再传入计算好的参数. functionName( para ...
- 深度掌握 Java Stream 流操作,让你的代码高出一个逼格!
概念 Stream将要处理的元素集合看作一种流,在流的过程中,借助Stream API对流中的元素进行操作,比如:筛选.排序.聚合等. Stream 的操作符大体上分为两种:中间操作符和终止操作符 中 ...
- Java Stream流的使用
流相关的方法可以分为三种类型,分别是:获取Stream流.中间方法.终结方法.中间方法会返回当前流,可以方便的进行链式调用. 流不可重复使用,否则会报错: java.lang.IllegalState ...
- Java Stream流
Java8 Stream流编程 Stream 使用一种类似于SQL语句从数据库查询数据的直观方式来提供对 Java 集合运算和表达的高阶抽象.得益于 Lambda 所带来的函数式编程,Stream A ...
- Java Stream流排序null以及获取指定条数数据
Java8的Stream流的一些用法, //排序 carerVehEntityList = carerVehEntityList.stream().sorted( Comparator.compari ...
- Java Stream简介, 流的基本概念
在Javaor .net编程中, 我们经常见到"stream" 这个字眼. 我们大概知道这是个流的意思, 如果看完本文的话, 应该会有1个大概的概念. 一, Java中什么是St ...
随机推荐
- 选择结构do...while语句
// do..while语句 #include<stdio.h> int main() { int a = 0; do { a++; printf("HelloWorld\n&q ...
- 基于Django的简易博客系统教程
1. 安装Django 在命令行中输入以下命令安装Django pip install django 2. 创建Django项目 在命令行中输入以下命令创建一个名为myblog的Django项目 dj ...
- Python基础 - 解释性语言和编译性语言
什么是机器语言 计算机是不能理解高级语言,当然也就不能直接执行高级语言了.计算机只能直接理解机器语言,所以任何语言,都必须将其翻译成机器语言,计算机才能运行高级语言编写的程序. 如何把我们写的代码 ...
- Tomcat处理http请求之源码分析
本文将从请求获取与包装处理.请求传递给Container.Container处理请求流程,这3部分来讲述一次http穿梭之旅. 1 请求包装处理 tomcat组件Connector在启动的时候会监听端 ...
- JS异步解决方案及优缺点
1. 回调函数 优点: 解决了同步的问题(只要有一个任务耗时长后面的任务都会等待,会拖延程序执行) 缺点: 回调地狱 不能用try catch捕获 不能用 return setTimeout(( ...
- MySQL锁表解锁表
CREATE TABLE t1 ( id int(11) NOT NULL, val varchar(10) DEFAULT NULL, PRIMARY KEY (id) ) ENGINE=InnoD ...
- postgresql json取值为何这么慢?
一.缘起 慢sql分析,总行数80w+. 比较特殊的是:其中有个字段info是jsonb类型,写法:info::json->'length' as length 同样的查询条件查这个字段和不查这 ...
- Gamma:强大的AI制作PPT神器,用完再也回不去了!
看过许多 AI 制作 PPT 软件,最终还是被 Gamma 惊艳到. Gamma 是一款基于人工智能技术的 PPT 制作工具,可以帮助用户轻松制作高质量的 PPT 演示文稿. 痛点解决 相比传统制作 ...
- Flutter系列文章-Flutter环境搭建和Dart基础
Flutter是Google推出的一个开源的.高性能的移动应用开发框架,可以用一套代码库开发Android和iOS应用.Dart则是Flutter所使用的编程语言.让我们来看看如何搭建Flutter开 ...
- 【转载】Linux虚拟化KVM-Qemu分析(四)之CPU虚拟化(2)
原文信息: 作者:LoyenWang 出处:https://www.cnblogs.com/LoyenWang/ 公众号:LoyenWang 版权:本文版权归作者和博客园共有 转载:欢迎转载,但未经作 ...