Bee*_*nny 0 java lambda java-8
我有这样的数据:
List<Map<String, String>> = // psuedocode
[
{
"ID": "a",
"Value": "val1"
},
{
"ID": "b",
"Value": "val2"
},
]
Run Code Online (Sandbox Code Playgroud)
我想把它变成
Map<String, String> = // more pseudocode
{
"a": "val1",
"b": "val2"
}
Run Code Online (Sandbox Code Playgroud)
到目前为止我有这样的事情:
Map<String, String> output = myList.stream()
.flatMap(m -> m.entrySet().stream())
.collect(Collectors.toMap())
Run Code Online (Sandbox Code Playgroud)
有人可以指导我吗?另一种方法是使用常规for循环,但我正在尝试使用lambdas.
您需要将列表中的每个Map实例映射到键和值,然后收集到单个Map实例中.
Map<String, String> output = myList.stream()
.collect(Collectors.toMap(m -> m.get("ID"), m -> m.get("Value")));
Run Code Online (Sandbox Code Playgroud)
如果重复"ID",这将抛出异常.有重载方法可以让您更好地控制此行为.