IdentityHashMap类是错误的吗?

Sai*_*Aye 0 java

我试过java.util.IdentityHashMap,看

public class IdentityHashMapTest{
    public static void main(String args[]) {
        Map<String, String> m = new IdentityHashMap<String, String>();
        m.put("John", "Doe");
        m.put("John", "Paul");
        System.out.println(m.size());
    }
}
Run Code Online (Sandbox Code Playgroud)

根据Java API说,

此类使用哈希表实现Map接口,在比较键(和值)时使用引用相等性代替对象相等性

结果可能是2.但实际是1.IdentityHashMap类是错误的吗?

gus*_*afc 5

将其更改为

       m.put("John", "Doe");
       m.put(new String("John"), "Paul");
Run Code Online (Sandbox Code Playgroud)

它将有两个条目.字符串文字是汇集的,所以"John" == "John".