我有两张地图:
Map<A, List<B>> map1 = new HashMap<>();
并且
Map<A, List<C>> map2 = new HashMap<>();
其中C是B中的嵌套对象,如下所示:
public class B {
private C c;
}
我想在map1中过滤以排除map2中具有相同键的所有条目,A from map1
= A from map2
和B.C in map1
= C in map2
结果将是:
Map<A, List<B>> map1 = new HashMap<>();
答案 0 :(得分:1)
这个怎么样?如果A
的{{1}}包含在map1
的条目中,则使用Collection#removeIf从C
中删除所有B
条目。
map2
或改为使用Stream#filter。
map1.entrySet().removeIf(entry -> entry.getValue().stream().anyMatch(
b -> map2.getOrDefault(entry.getKey(), emptyList()).contains(b.c)
));