java 11 Stream 加强
JAVA 11 stream 加强
2023-09-14 09:00:30 时间
Stream 是 Java 8 中的新特性,Java 9 开始对 Stream 增加了以下 4 个新方法。
- 增加单个参数构造方法,可为null
Stream.ofNullable(null).count(); // 0
- 增加 takeWhile 和 dropWhile 方法
Stream.of(1, 2, 3, 2, 1)
.takeWhile(n -> n < 3)
.collect(Collectors.toList()); // [1, 2]
从开始计算,当 n < 3 时就截止。
Stream.of(1, 2, 3, 2, 1)
.dropWhile(n -> n < 3)
.collect(Collectors.toList()); // [3, 2, 1]
这个和上面的相反,一旦 n < 3 不成立就开始计算。
3)iterate重载
这个 iterate 方法的新重载方法,可以让你提供一个 Predicate (判断条件)来指定什么时候结束迭代。
举个例子:
import java.util.stream.Stream;
import org.junit.Test;
/**
* 流的处理
* 1) 创建流
* 2) 中间操作
* 3) 终止操作
*/
public class StreamTest {
@Test
public void test3() {
// 流的迭代, 创建流
Stream<Integer> stream1 = Stream.iterate(1, t -> (2 * t) + 1);
stream1.limit(10).forEach(System.out::println);
System.out.println("*************************");
// 有限的迭代
Stream<Integer> stream2 = Stream.iterate(1, t -> t < 1000, t -> (2 * t) + 1);
stream2.forEach(System.out::println);
}
@Test
public void test2() {
Stream<Integer> stream1 = Stream.of(3, 9, 20, 22, 40, 7);
// 新方法, takeWhile, dropWhile
// 从流中一直获取判定器为真的元素, 一旦遇到元素为假, 就终止处理.
Stream<Integer> stream2 = stream1.takeWhile(t -> t % 2 != 0);
stream2.forEach(System.out::println);
System.out.println("**********************");
stream1 = Stream.of(3, 9, 20, 22, 40, 7);
Stream<Integer> stream3 = stream1.dropWhile(t -> t % 2 != 0);
stream3.forEach(System.out::println);
}
@Test
public void test1() {
Stream<Integer> stream1 = Stream.of(3, 9, 20, 22, 40);
//stream1.forEach(t -> System.out.println(t));
stream1.forEach(System.out::println);
System.out.println("***********************************");
Stream<Object> stream2 = Stream.of(); // 流中没有数据
stream2.forEach(System.out::println);
System.out.println("***********************************");
// 传入null会被解析为是一个数组对象, 会进一步访问它的长度信息
//Stream<Object> stream3 = Stream.of(null);
//stream3.forEach(System.out::println);
// 可以传入 一个null来创建流对象
Stream<Object> stream3 = Stream.ofNullable(null);
stream3.forEach(System.out::println);
}
}
相关文章
- Java 开发环境配置--eclipse工具进行java开发
- Java实现 蓝桥杯 算法训练 相邻数对(暴力)
- Java实现 蓝桥杯VIP 算法提高 11-2删除重复元素
- Java实现 蓝桥杯VIP 算法提高 11-2删除重复元素
- Java实现蓝桥杯历届试题买不到的数目
- Java 蓝桥杯 算法训练 字符串的展开 (JAVA语言实现)
- java.util.MissingResourceException: Can't find resource for bundle oracle.sysman.db.rsc.LoginResourc
- java截取字符串函数
- Java通过mysql-connector-java-8.0.11连接MySQL Server 8.0遇到的几个问题
- java 11 完全支持Linux容器(包括Docker)
- 【JAVA】Java 异常中e的getMessage()和toString()方法的异同
- 【JAVA】 02-Java对象细节
- 【JAVA】 01-Java基础知识
- 【Java】java使用反射访问对象方法和成员变量
- 使用Java代码安装Netweaver ABAP的Certificate
- atitit.导出excel的设计----查询结果 导出为excel的实现java .net php 总结
- 【Java】java 环境配置(详细教程)
- 【java】Java连接mysql数据库及mysql驱动jar包下载和使用
- JAVA那点破事,并发、IO模型、集合、线程池、死锁、非阻塞、AQS...
- Java通过PDF模板导出数据 adobe acrobat的PDF编辑器 itextpdf java导出文件输出流
- JAVA设计模式之单例模式
- JAVA运行java程序
- 《Java程序设计》第16周周五:数据库连接 与 随机数的使用
- 【java】Java IO体系总览