据我了解,以下代码应在进行基于false
的比较时打印identity
。
但是,当我运行以下代码时,它正在打印true
:
public class Test1 {
public static void main(String[] args) {
IdentityHashMap m = new IdentityHashMap();
m.put("A", new String("B"));
System.out.println(m.remove("A", new String("B")));
}
}
有人可以帮助我理解为什么这种行为吗?
最佳答案
您实际上遇到了JDK中的错误,请参见JDK-8178355。 IdentityHashMap
没有通过默认方法添加到remove(K,V)
的Map
方法的自定义实现,这会导致此问题。
关于java - IdentityHashMap返回的值不正确-为什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44671737/