我有一张以下结构的地图:
Map<String, Map<String, String>> input;
它基本上包含一组ID,并为每个ID包含与属性关联的值。
For ex:
ID: Attribute Value
A X 100
A Y 200
B X 40
B Y 40
我只对每个ID的属性X感兴趣,我想做一些处理并将其存储为新地图 这将具有相同的定义Map&gt;
我在Java 8中尝试这个:
Map<String, Map<String, String>> getResults(Map<String, Map<String, String>> input) {
input.entrySet().stream()
.map(id -> {
String valueX = id.getValue().get("X");
String computeX = compute(valueX);
// Now start adding these results to the new map.
} )
}
我无法关注,如何将其添加到新地图中。
答案 0 :(得分:4)
您可以通过以下方式将输入地图的条目收集到新地图中:
Map<String, Map<String, String>> getResults(Map<String, Map<String, String>> input)
{
return input.entrySet()
.stream()
.collect(Collectors.toMap(Map.Entry::getKey,
e -> {
Map<String,String> map = new HashMap<>();
map.put("X",e.getValue().get("X"));
return map;
}));
}
输出地图的键与输入地图的键相同。
输出地图的值是通过创建新的HashMap<String,String>
并在其中输入"X"
键的值来构建的。