比较两个映射的键并返回布尔值

New*_*ser 1 java lambda java-8 java-stream

我有两个地图,我需要检查两者是否具有相同的键和相同的键数,并返回一个布尔值。我想为此使用流,我得到的是通过创建另一个列表

mapA
.entrySet()
.stream()
.filter(entry -> mapB.containsKey(entry.getKey()))
.collect(
    Collectors.toMap(Entry::getKey, Entry::getValue));
Run Code Online (Sandbox Code Playgroud)

但是我的问题是,我可以在一行中执行此操作吗?它不会创建另一个列表,但是会返回一个布尔值,无论它们是否相同。

rge*_*man 6

无需为此使用流。只需获取地图的键集并使用即可equals,其指定Set如下

返回true指定对象是否也是一个集合,两个集合具有相同的大小,并且指定集合的​​每个成员都包含在此集合中[。]

Map<String, Integer> m1 = new HashMap<>();
m1.put("a", 10);
m1.put("b", 10);
m1.put("c", 10);

Map<String, Integer> m2 = new HashMap<>();
m2.put("c", 20);
m2.put("b", 20);
m2.put("a", 20);

System.out.println(m1.keySet().equals(m2.keySet()));  //true
Run Code Online (Sandbox Code Playgroud)