gpt4 book ai didi

Java 8 Streams FlatMap 方法示例

转载 作者:IT老高 更新时间:2023-10-28 11:39:39 24 4
gpt4 key购买 nike

我一直在检查即将发布的 Java update ,即:Java 8 or JDK 8 .是的,我很不耐烦,有很多新东西,但是,有一些我不明白的东西,一些简单的代码:

final Stream<Integer>stream = Stream.of(1,2,3,4,5,6,7,8,9,10);
stream.flatMap();

javadocs 是

public <R> Stream<R> flatMap(Function<? super T,? extends Stream<? extends R>> mapper)

Returns a stream consisting of the results of replacing each element of this stream with the contents of a mapped stream produced by applying the provided mapping function to each element. Each mapped stream is closed after its contents have been placed into this stream. (If a mapped stream is null an empty stream is used, instead.) This is an intermediate operation.

如果有人创建了一些关于 flatMap 的简单现实示例,我将不胜感激。 ,如何在以前的 Java 版本中对其进行编码 Java[6,7]以及如何使用 Java 8 编写相同的例程.

最佳答案

flatMap 没有意义一个 Stream这已经是平坦的了,就像 Stream<Integer>你已经在你的问题中展示了。

但是,如果您有 Stream<List<Integer>>那么这是有道理的,你可以这样做:

Stream<List<Integer>> integerListStream = Stream.of(
Arrays.asList(1, 2),
Arrays.asList(3, 4),
Arrays.asList(5)
);

Stream<Integer> integerStream = integerListStream .flatMap(Collection::stream);
integerStream.forEach(System.out::println);

哪个会打印:

1
2
3
4
5

要在 Java 8 之前执行此操作,您只需要一个循环:

List<List<Integer>> integerLists = Arrays.asList(
Arrays.asList(1, 2),
Arrays.asList(3, 4),
Arrays.asList(5)
)

List<Integer> flattened = new ArrayList<>();

for (List<Integer> integerList : integerLists) {
flattened.addAll(integerList);
}

for (Integer i : flattened) {
System.out.println(i);
}

关于Java 8 Streams FlatMap 方法示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22382453/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com