我有一个类似的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
操作,这是您对流执行的操作,与 map
、filter
、collect
相同等,它执行以下操作:
您提供一个 lambda,将流中的每个元素转换为流本身(即流的流),然后操作的“输出”是由所有这些流连接在一起组成的单个流。
关于JAVA如何将.map()的返回值追加到列表中而不是返回列表的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61470589/