Java HashMap比较完全不一致的质量。相同的键相同的顺序不同的值
嗨,请在下面找到我的情景 我有两个映射,键为字符串,值为布尔值键和顺序相同。但是这些值可能会改变。 我需要比较两个贴图,如果所有键的值都发生了变化,那么我应该停止 如何进行这种比较Java HashMap比较完全不一致的质量。相同的键相同的顺序不同的值,java,collections,hashmap,comparison,Java,Collections,Hashmap,Comparison,嗨,请在下面找到我的情景 我有两个映射,键为字符串,值为布尔值键和顺序相同。但是这些值可能会改变。 我需要比较两个贴图,如果所有键的值都发生了变化,那么我应该停止 如何进行这种比较 Map <String,Boolean> map1 = new TreeMap<String,Boolean>(); map1.put("String1", true); map1.put("String2", true); map1=newtreemap(); map1.put(“Stri
Map <String,Boolean> map1 = new TreeMap<String,Boolean>();
map1.put("String1", true);
map1.put("String2", true);
map1=newtreemap();
map1.put(“String1”,true);
map1.put(“String2”,真);
map2的可能性
1。值与map1中的值相同。不应停止
Map <String,Boolean> map2 = new TreeMap<String,Boolean>();
map1.put("String1", true);
map1.put("String2", true);
Map <String,Boolean> map2 = new TreeMap<String,Boolean>();
map1.put("String1", true);
map1.put("String2", false);
map2=newtreemap();
map1.put(“String1”,true);
map1.put(“String2”,真);
2。与map1相比,一个值[String2]发生了变化。不应停止
Map <String,Boolean> map2 = new TreeMap<String,Boolean>();
map1.put("String1", true);
map1.put("String2", true);
Map <String,Boolean> map2 = new TreeMap<String,Boolean>();
map1.put("String1", true);
map1.put("String2", false);
map2=newtreemap();
map1.put(“String1”,true);
map1.put(“String2”,假);
3。与map1相比,这两个值都发生了变化。应该到此为止
Map <String,Boolean> map2 = new TreeMap<String,Boolean>();
map1.put("String1", false);
map1.put("String2", false);
map2=newtreemap();
map1.put(“String1”,假);
map1.put(“String2”,假);
对不起,我是新的,所以我在评论中发布了回复
我计划遍历地图并进行检查。在这样做之前,我只想检查一下是否有任何其他简洁的方法来实现这一点。考虑到两个地图都有确切的键数
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");
}
嗯。你有使用循环的答案,依我看,两者都是完美的,而且有点太复杂了。因此,我将提供我的:
boolean allValuesChanged =
map2.entrySet()
.stream()
.allMatch(entry -> !map1.get(entry.getKey()).equals(entry.getValue()));
这个答案
- 它简洁明了
- 不依赖于键的顺序(因此,无论贴图的类型如何,只要它们具有相同的键,都可以工作)
- 不使用原始类型
- 一旦找到两个相等的条目,就停止循环