Java 8 引入了一种新的抽象数据类型 Stream,它让数据的操作变得更加简单高效。Stream 可以是一组数据的集合、数组等等,它支持多方面的操作,比如过滤、映射、筛选、分组、去重、排序等等。下面将介绍 Java8 Stream 常用的方法。
Java8 Stream 流常用方法合集
Java 8 引入了一种新的抽象数据类型 Stream,它让数据的操作变得更加简单高效。Stream 可以是一组数据的集合、数组等等,它支持多方面的操作,比如过滤、映射、筛选、分组、去重、排序等等。下面将介绍 Java8 Stream 常用的方法。
创建流
- 从集合创建流:可以将一个集合转换为流,并对流中的元素进行操作。
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Stream<Integer> stream = list.stream();
- 从数组创建流:可以将一个数组转换为流,并对流中的元素进行操作。
int[] arr = {1, 2, 3, 4, 5};
IntStream stream = Arrays.stream(arr);
- 常量流:可以使用
Stream类中的静态方法来创建一个常量流。
Stream<String> stream = Stream.of("hello", "world");
- 无限流:可以使用
Stream类中的静态方法来创建一个无限流。
Stream<Integer> stream1 = Stream.iterate(0, n -> n + 2);
stream1.limit(5).forEach(System.out::println); // 输出: 0, 2, 4, 6, 8
Stream<Double> stream2 = Stream.generate(Math::random);
stream2.limit(5).forEach(System.out::println); // 输出: 五个 0~1 之间的随机小数
转换操作
- map() 方法
map() 方法可以将一个流中的每个元素转换为另一个元素。例如,我们可以将一个流中的每个元素平方:
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Stream<Integer> stream = list.stream();
stream.map(i -> i * i).forEach(System.out::println);
// 输出: 1, 4, 9, 16, 25
- flatMap() 方法
flatMap() 方法可以将一个流中的每个元素转换为另一个流。例如,我们可以将一个流中的每个元素拆分成字符串数组并且输出:
Stream<String> stream1 = Stream.of("hello", "world");
stream1.flatMap(s -> Arrays.stream(s.split(""))).forEach(System.out::println);
// 输出: h, e, l, l, o, w, o, r, l, d
过滤操作
- filter() 方法
filter() 方法可以将一个流中的元素按照指定规则过滤掉一部分。例如,我们可以将一个流中的所有偶数过滤出来:
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Stream<Integer> stream = list.stream();
stream.filter(i -> i % 2 == 0).forEach(System.out::println);
// 输出: 2, 4
- distinct() 方法
distinct() 方法可以将一个流中的重复元素去重并返回一个新的流。例如,我们可以将一个流中的重复元素去重:
Stream<String> stream1 = Stream.of("hello", "world", "hello");
stream1.distinct().forEach(System.out::println);
// 输出: hello, world
排序操作
sorted() 方法可以将一个流中的元素进行排序并返回一个新的流。例如,我们可以将一个流中的元素按照自然顺序排序:
List<Integer> list = Arrays.asList(4, 3, 6, 1, 5, 2);
Stream<Integer> stream = list.stream();
stream.sorted().forEach(System.out::println);
// 输出: 1, 2, 3, 4, 5, 6
统计操作
- count() 方法
count() 方法可以返回一个流中元素的个数。例如,我们可以统计一个流中元素的个数:
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Stream<Integer> stream = list.stream();
long count = stream.count();
System.out.println(count); // 输出: 5
- reduce() 方法
reduce() 方法可以将一个流中的所有元素按照指定规则归约为一个元素,并返回一个 Optional 类型的结果。例如,我们可以将一个流中的元素求和:
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Stream<Integer> stream = list.stream();
Optional<Integer> sum = stream.reduce((x, y) -> x + y);
System.out.println(sum.get()); // 输出: 15
以上就是 Java8 Stream 常用的一些方法,如果你想深入了解 Java8 Stream,可以参考 JDK8 中的官方文档。
本文标题为:Java8 Stream 流常用方法合集
- java – HSQLDB,LocalDateTime,JdbcTemplate 2023-11-03
- Spring jackson原理及基本使用方法详解 2024-02-02
- java实现多人聊天室可视化 2022-12-27
- 两个listbox实现选项的添加删除和搜索 2024-01-30
- Spring Boot 整合RocketMq实现消息过滤功能 2022-12-07
- Java如何通过反射获取Constructor、Field、Method对象 2022-12-16
- java开发validate方法中校验工具类详解 2023-05-19
- Docker格式化输出命令:”docker inspect –format” 学习记录 2023-12-10
- java – 无效的列类型〜将ArrayList发送到pl / sql createdNameQuery 2023-11-01
- java中Timer定时器的使用和启动方式 2023-08-10
