我试过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类是错误的吗?
将其更改为
m.put("John", "Doe");
m.put(new String("John"), "Paul");
Run Code Online (Sandbox Code Playgroud)
它将有两个条目.字符串文字是汇集的,所以"John" == "John".