use*_*342 3 java hashmap java-8
我有一张具有以下结构的地图:
Map<String, Map<String, String>> input;
Run Code Online (Sandbox Code Playgroud)
它基本上包含一组 ID,并且对于每个 ID,包含一个与属性关联的值。
For ex:
ID: Attribute Value
A X 100
A Y 200
B X 40
B Y 40
Run Code Online (Sandbox Code Playgroud)
我只对每个 ID 的属性 X 感兴趣,我想做一些处理并将其存储为一个具有相同定义的新地图 Map>
我正在 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.
} )
}
Run Code Online (Sandbox Code Playgroud)
我无法理解如何将其添加到新地图中。
您可以通过以下方式将输入映射的条目收集到新映射中:
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;
}));
}
Run Code Online (Sandbox Code Playgroud)
输出映射的键与输入映射的键相同。
输出映射的值是通过创建一个新映射HashMap<String,String>并将键的值放入其中来构造的"X"。
| 归档时间: |
|
| 查看次数: |
7427 次 |
| 最近记录: |