我需要比较地图A,地图B中存在的关键字.如果关键字存在于两个地图(A和B)中,则添加该特定关键字和值需要使用lamda表达式添加到新地图c中.请在下面找到我的示例代码:
mapA.forEach((key, value) -> mapC.put(mapB.get(Key), value)));
Run Code Online (Sandbox Code Playgroud)
上面的代码当前不会在添加到mapC之前检查mapA中是否存在key,mapB.
一些事情:
mapA
.entrySet()
.stream()
.filter(entry -> mapB.containsKey(entry.getKey()))
.collect(
Collectors.toMap(Entry::getKey, Entry::getValue));
Run Code Online (Sandbox Code Playgroud)
如果你不坚持lambda,你也可以这样做:
Map<K, V> mapC = new HashMap<>(mapA);
mapC.keySet().retainAll(mapB.keySet());
Run Code Online (Sandbox Code Playgroud)