HashMap比较完全不平等。相同的键同样顺序不同的值

时间:2016-06-15 15:45:14

标签: java collections hashmap comparison

嗨请在我的情景中找到,

我有两个map键作为字符串,值为boolean。 键也一样,也是顺序。但价值可能会改变。

我需要比较两张地图,如果所有键的值都有变化,那么我应该停止。

如何做这个比较?

Map <String,Boolean> map1 = new TreeMap<String,Boolean>();
map1.put("String1", true);
map1.put("String2", true);

map2的可能性

1。值与map1中的值相同。不应该停止

Map <String,Boolean> map2 = new TreeMap<String,Boolean>();
map1.put("String1", true);
map1.put("String2", true);

2。与map1相比,一个值[String2]发生了变化。不应该停止

Map <String,Boolean> map2 = new TreeMap<String,Boolean>();
map1.put("String1", true);
map1.put("String2", false);

第3。与map1相比,这两个值都发生了变化。应该在这里停止

Map <String,Boolean> map2 = new TreeMap<String,Boolean>();
map1.put("String1", false);
map1.put("String2", false);

抱歉,我是新人,所以我发表评论作为回复。

我计划迭代地图并进行检查。在此之前,只想检查是否有任何其他巧妙的方法来实现这一点。

2 个答案:

答案 0 :(得分:0)

考虑两个地图都没有确切的密钥

 public static void main(String[] args)
    {

        Map map1 = new TreeMap();

        map1.put("String1", true);

        map1.put("String2", true);

        Map map2 = new TreeMap();

        map2.put("String1", false);

        map2.put("String2", false);

        Set keys = map1.keySet();
        boolean stop = true;
        for (Iterator i = keys.iterator(); i.hasNext();)
        {
            String key = (String) i.next();
            boolean value1 = (boolean) map1.get(key);
            boolean value2 = (boolean) map2.get(key);

            if (value1 == value2)
            {
                stop = false;
                break;
            }
        }

        if (stop)
            System.out.println("All values are different");
    }

答案 1 :(得分:0)

行。你有使用循环的答案,IMO都可以完善,而且有点过于复杂。所以我会提供我的:

var s = "abcdwq'xx'x";
console.log(s.replace(/'/g, "\\'"));

这个答案

  • 简洁明了
  • 不依赖于键的顺序(因此无论地图的类型是什么,只要它们具有相同的键,它将起作用)
  • 不使用原始类型
  • 一找到两个相等的条目就停止循环