HashMap<Character, Integer> mapS = new HashMap();
HashMap<Character, Integer> mapT = new HashMap();
/**
*省略
**/
for(Map.Entry<Character, Integer> entry : mapT.entrySet())
if (mapS.get(entry.getKey()) != entry.getValue()) {
return false;
}
return true;
本来mapS.get() 到的Integer 的 值 和entry.getValue()得到的Integer的值相等,但是用==比较的结果却是false
原因在于,java中Integer类型对于-128-127之间的数是缓冲区取的,所以用==比较是一致的。
但对于其它的数字是在堆中new出来的。所以地址空间不一样,也就不相等。
所以比较 Integer的值要用intValue()
不能直接用value,因为value是私有的成员
版权声明:本文为qq_44761507原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。