Ela*_*nda 5 java lambda dictionary hashmap
我尝试合并两张地图
private void mergeMaps(HashMap<String, FailureExample> current,
HashMap<String, FailureExample> other) {
current.forEach((k, v) -> other.merge(k, v,
(v1, v2) -> {
FailureExample answer = new FailureExample();
addFromListWithSizeLimit(v1, answer);
addFromListWithSizeLimit(v2, answer);
// answer.requests.addAll(v1.requests);
// answer.requests.addAll(v2.requests);
return answer;
}));
}
Run Code Online (Sandbox Code Playgroud)
但是当current有0个元素时,lambda不会被执行.
如果没有合并可以不合并吗?
我想要:
map1{} ; map2{<a,<a1>>} returns map3{<a,<a1>>}
map1{<a,<b1>>} ; map2{<a,<a1>>} returns map3{<a,<a1, b1>>}
Run Code Online (Sandbox Code Playgroud)
如果您调用forEach
一个空集合,显然没有任何东西可以执行 lambda。
如果HashMap.merge
这是您想要合并列表的方式,您可以在第一个为空的情况下交换地图:
if (current.isEmpty()) {
HashMap<String, FailureExample> tmp = current;
current = other;
other = tmp;
}
Run Code Online (Sandbox Code Playgroud)
但是,这会将元素添加到other
,而不是current
。
或者,您可以将putAll
所有内容都放入第一个地图中:
if (current.isEmpty()) {
current.putAll(other);
}
Run Code Online (Sandbox Code Playgroud)