我有一个地图<String,List<Map<String,Object>>
等结构。我想将一个函数应用于地图,如下所示。该方法需要一个密钥并使用一个
映射列表的<String,Object>
。每个密钥在列表中都有几个Map <String,Object>
。如何将处理方法应用于地图<String,Object>
的每个值的地图键?我能够使用forEach循环(见下文),但我觉得这不是以功能方式解决问题的最佳方法。
TypeProcessor p=new TypeProcessor.instance();
//Apply this function to the key and each map from the list
// The collect the Result returned in a list.
Result process(String key, Map<String,Object> dataPoints);
List<Result> list = new ArrayList<>();
map.forEach(key,value) -> {
value.forEach(innerVal -> {
Result r=p.process(key,innerVal);
list.add(r):
});
});
答案 0 :(得分:4)
您的代码似乎要为整个process
应用Map
,因此您可以这样做:
List<Result> l = map.entrySet()
.stream()
.flatMap(e -> e.getValue().stream().map(value -> process(e.getKey(), value)))
.collect(Collectors.toList());
答案 1 :(得分:2)
好吧,假设This is just some test text.
Many thanks,
James Jones
Some company
51 made up street
The world
包含map
,您不需要任何key
。只需从外部foreach
获取值,将其流式传输,映射到新对象并收集到map
:
List