Java Lambda表达式流具有相同键和不同对象列表的两个映射

Java Lambda表达式流具有相同键和不同对象列表的两个映射,java,lambda,java-8,Java,Lambda,Java 8,我有两张地图: Map<A, List<B>> map1 = new HashMap<>(); 我想在map1中进行筛选,以排除map2中具有相同键的所有条目和map1中的A=A和map1中的B.C=C 因此,结果将是: Map<A, List<B>> map1 = new HashMap<>(); Map map1=newhashmap(); 这个怎么样?如果B的C包含在map2条目中,则使用从map1中删除所有A条目

我有两张地图:

Map<A, List<B>> map1 = new HashMap<>();
我想在map1中进行筛选,以排除map2中具有相同键的所有条目和map1中的
A
=
A
和map1中的
B.C
=
C

因此,结果将是:

Map<A, List<B>> map1 = new HashMap<>();
Map map1=newhashmap();
这个怎么样?如果
B
C
包含在
map2
条目中,则使用从
map1
中删除所有
A
条目

map1.entrySet().removeIf(entry -> entry.getValue().stream().anyMatch(
        b -> map2.getOrDefault(entry.getKey(), emptyList()).contains(b.c)
));
改用

Map result=map1.entrySet().stream()
.filter(条目->条目.getValue().stream().noneMatch(
b->map2.getOrDefault(entry.getKey(),emptyList())。包含(b.c)
))
.collect(toMap(条目::getKey,条目::getValue));

你能举一个输入和预期输出的例子吗?愿望的陈述不是问题。请回答您的问题,并提供完整的问题描述,包括(a)示例输入和预期输出,(b)您自己解决问题的尝试,以及(c)解释您遇到的问题-如果出现错误,堆栈跟踪。如果输出错误-输出错误。谢谢你告诉我们-如果这是你想要做的,那就继续吧。(没有问题)欢迎来到堆栈溢出!请带上,四处看看,并通读,尤其是和。从第二个链接开始:“请求家庭作业帮助的问题必须包括到目前为止您为解决问题所做工作的摘要,以及您在解决问题时遇到的困难的描述。”使用Stream#filter效果很好。谢谢你的支持help@Mohamed一点也不。
Map<A, List<B>> map1 = new HashMap<>();
map1.entrySet().removeIf(entry -> entry.getValue().stream().anyMatch(
        b -> map2.getOrDefault(entry.getKey(), emptyList()).contains(b.c)
));
Map<A, List<B>> result = map1.entrySet().stream()
    .filter(entry -> entry.getValue().stream().noneMatch(
            b -> map2.getOrDefault(entry.getKey(), emptyList()).contains(b.c)
    ))
    .collect(toMap(Entry::getKey, Entry::getValue));