我们如何比较java中的两个hashmaps

时间:2014-02-20 05:28:41

标签: java hashmap

我的应用程序存储数据库和用户值的值并进行比较。为了存储这些值,我使用了hashmap,键为整数,列表作为数据并存储值。键值和数据不必相同,但2个哈希映射中的所有数据值应相同

哈希图如下: key:value

1-[cd,done]
2-[mb,done]
3-[core,done]

另一个是

1-[mb,done]
2-[core,done]
3-[cd,done]

在代码中,无论值的存储顺序如何,上述hasmap都应该相等 但截至目前,我无法正确编码......

2 个答案:

答案 0 :(得分:2)

据我了解,您只想测试地图的值是否等于他们自己的地图。

因此,您只需使用values()方法比较containsAll

hashMap1.values().containsAll(hashMap2.values()) &&
    hashMap2.values().containsAll(hashMap1.values());

您还可以使用CollectionUtils.isEqualCollection来简化代码:

CollectionUtils.isEqualCollection(hashMap1.values(), hashMap2.values());

答案 1 :(得分:0)

public static void main(String [] args){

    Map<Integer,String> map1 = new HashMap<Integer,String>();
    Map<Integer,String> map2 = new HashMap<Integer,String>();

    map1.put(1, "ABC");
    map1.put(2, "1123");
    map2.put(1, "XYZ");

    boolean val = map1.keySet().containsAll(map2.keySet());

    for (Entry<Integer, String> str : map1.entrySet()) {
        System.out.println("================="+str.getKey());

        if(map2.containsKey(str.getKey())){
            System.out.println("Map2 Contains Map 1 Key");
        }
    }

    System.out.println("================="+val);
}