【问题标题】:JAVA How to append the return value of .map() in a list instead of returning a list of listJAVA如何将.map()的返回值附加到列表中,而不是返回列表列表
【发布时间】:2020-04-28 00:14:12
【问题描述】:

我有一个类似的 java 代码

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

关键是mapFunction有如下定义:

List<Entry> mapFunction(DataListItem dataListItem)

因此上面的 stream().map() 调用返回List&lt;List&lt;Entry&gt;&gt;

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

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

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

【问题讨论】:

  • 这样使用平面地图dataList.stream.map(ClassA::mapFunction).flatMap(List::stream).collect(Collectors.toList())

标签: java collections java-stream


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2014-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-13
    • 1970-01-01
    • 1970-01-01
    • 2015-06-02
    • 2021-01-14
    相关资源
    最近更新 更多