使用lamda表达式java比较两个映射

0 lambda java-8 java-stream

我需要比较地图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.

lex*_*ore 8

一些事情:

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)