Bre*_*een 7 java lambda java-8
我有一个像Map这样的结构<String,List<Map<String,Object>>.我想将一个函数应用于地图,如下所示.该方法接受一个键并使用<String,Object>列表的Map .每个键<String,Object>在列表中都有几个Map .如何将处理方法应用于Map的每个值的地图键<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);
Run Code Online (Sandbox Code Playgroud)
List<Result> list = new ArrayList<>();
map.forEach(key,value) -> {
value.forEach(innerVal -> {
Result r=p.process(key,innerVal);
list.add(r):
});
});
Run Code Online (Sandbox Code Playgroud)
从你的代码看来,你想申请process整个Map,所以你可以这样做:
List<Result> l = map.entrySet()
.stream()
.flatMap(e -> e.getValue().stream().map(value -> process(e.getKey(), value)))
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2164 次 |
| 最近记录: |