JAVA如何将.map()的返回值追加到列表中而不是返回列表的列表

标签 java collections java-stream

我有一个类似的java代码

/*Statement A*/
dataList.stream.map(ClassA::mapFunction).collect(Collectors.toList())

问题是mapFunction 具有以下定义:

List<Entry> mapFunction(DataListItem dataListItem)

因此上面的stream().map()调用返回List<List<Entry>>

我想要的是返回值应该是 list<Entry> (基本上附加所有返回值)为此,我目前正在做的是:

final List<Entry> entryList = new ArrayList<>();
dataList.stream.map(dataListItem -> entryList.addAll(ClassA.mapFunction(dataListItem))
                                   .collect(Collectors.toList());

是否有一种干净的方法来附加mapFunction返回值,使得语句A的结果只是List<Entry>而不是List<List<Entry>> .

最佳答案

flatMap 操作,这是您对流执行的操作,与 mapfiltercollect 相同等,它执行以下操作:

您提供一个 lambda,将流中的每个元素转换为流本身(即流的流),然后操作的“输出”是由所有这些流连接在一起组成的单个流。

关于JAVA如何将.map()的返回值追加到列表中而不是返回列表的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61470589/

相关文章:

scala - Scala 与 Java 8 中的折叠操作

java - 从 ArrayList<HashMap<String, String>>> 获取键到另一个数组

java - 使用括号获取表达式的最小值和最大值

用于根据特定字段对对象列表进行排序的 java 8 流

java - 使用现有声音输入在Java中为Windows创建麦克风

java - 检测android/java中多列数组列表中的重复元素?

java - 默认情况下,自签名证书和 CN 中带有通配符的证书是否在 Java 中被阻止?

java - 我需要一些用于 Java 和 xml 的 jar

java - 如何安全地复制 Collection ?

java - java中传入的效率