如何根据值比较两个 map ?我有两个包含相等值的 map ,想通过它们的值来比较它们。这是一个例子:
Map a = new HashMap();
a.put("foo", "bar"+"bar");
a.put("zoo", "bar"+"bar");
Map b = new HashMap();
b.put(new String("foo"), "bar"+"bar");
b.put(new String("zoo"), "bar"+"bar");
System.out.println("equals: " + a.equals(b)); // obviously false
我应该如何更改代码以获得 true?
最佳答案
比较值(value)平等 map 的正确方法是:
- 检查 map 大小是否相同(!)
- 从一张 map 中获取一组键
- 对于您检索到的那个集合中的每个键,检查从该键的每个映射中检索到的值是否相同(如果一个映射中不存在该键,则完全不相等)
换句话说(减去错误处理):
boolean equalMaps(Map<K,V>m1, Map<K,V>m2) {
if (m1.size() != m2.size())
return false;
for (K key: m1.keySet())
if (!m1.get(key).equals(m2.get(key)))
return false;
return true;
}
关于java - 如何按值比较两个 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2674021/