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 流常用方法合集 - Python技术站