是否可以使用java流来更改列表中地图的键,即给出地图的原始列表是:
List<Map<String, String>> list = new ArrayList<Map<String, String>>() {{
add(new HashMap<String, String>() {{
put("id", "1");
put("display", "foo");
}});
add(new HashMap<String, String>() {{
put("id", "2");
put("display", "bar");
}});
}};
System.out.println(list.toString());
Run Code Online (Sandbox Code Playgroud)
从上面的列表(输出演示)
[{display=foo, id=1}, {display=bar, id=2}]
Run Code Online (Sandbox Code Playgroud)
到地图列表:
[{sample=foo, sample_id=1}, {sample=bar, sample_id=2}]
Run Code Online (Sandbox Code Playgroud)
基本上,将键“id”更改为“sample_id”,并将“display”更改为“sample”。
这会起作用,
List<Map<String, String>> list2 = list.stream().map(e -> {
Map<String, String> map = new HashMap<>();
for (Map.Entry x : e.entrySet()) {
if (x.getKey().equals("id")) {
map.put("sample_id", (String) x.getValue());
} else if (x.getKey().equals("display")) {
map.put("sample", (String) x.getValue());
} else {
map.put((String) x.getKey(), (String) x.getValue());
}
}
return map;
}).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
稍微优雅一些,
List<Map<String, String>> list3 = list.stream().map(
e -> e.entrySet().stream().collect(Collectors.toMap(
x -> {
if (x.getKey().equals("id")) {
return "sample_id";
} else if (x.getKey().equals("display")) {
return "sample";
} else {
return x.getKey();
}
},
Map.Entry::getValue))).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15980 次 |
| 最近记录: |