我有两个地图,我需要检查两个地图是否具有相同的键和相同的键数,并返回一个布尔值。我想为此使用流,而我得到的是通过创建另一个列表
mapA
.entrySet()
.stream()
.filter(entry -> mapB.containsKey(entry.getKey()))
.collect(
Collectors.toMap(Entry::getKey, Entry::getValue));
但是我的问题是,我可以在一行中做到这一点吗?它不会创建另一个列表,但是会返回一个布尔值,无论它们是否相同。
答案 0 :(得分:6)
无需为此使用流。只需获取地图的键集并使用equals
, which is specified in Set
as follows:
如果指定的对象也是一个集合,则返回
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