展开全部
被222覆盖了,因为你的两个key都是1。Map是以K-Value的键值对形式来存储的,不能包含相同的62616964757a686964616fe58685e5aeb931333365666162key,每个key只能映射一个value。
如果想实现一个key保存两个value,可以参考以下代码:
public class test {
public static void main(String[] args) {
String str1 = new String("xx");
String str2 = new String("xx");
System.out.println(str1 == str2);
Map map = new IdentityHashMap();
map.put(str1, "nihao");
map.put(str2, "baiduzhidao");
for(Entry entry : map.entrySet())
{
System.out.println(entry.getKey()+" " + entry.getValue());
}
System.out.println(" containsKey---> " + map.containsKey("xx"));
System.out.println("str1 containsKey---> " + map.containsKey(str1));
System.out.println("str2 containsKey---> " + map.containsKey(str2));
System.out.println(" value----> " + map.get("xx"));
System.out.println("str1 value----> " + map.get(str1));
System.out.println("str2 value----> " + map.get(str2));
}
}
再来看一下运行后的结果:
false
xx baiduzhidao
xx nihao
containsKey---> false
str1 containsKey---> true
str2 containsKey---> true
value----> null
str1 value----> nihao
str2 value----> baiduzhidao
我们可以知道IdentityHashMap是靠对象来判断key是否相等的,如果我们一个key需要保存多个value的时候就需要使用到这个IdentityHashMap类,这样我们我们就可以需要的时候使用到这个类了。
扩展资料:
Map接口中键和值一一映射. 可以通过键来获取值。
给定一个键和一个值,你可以将该值存储在一个Map对象. 之后,你可以通过键来访问对应的值。
当访问的值不存在的时候,方法就会抛出一个NoSuchElementException异常.
当对象的类型和Map里元素类型不兼容的时候,就会抛出一个 ClassCastException异常。
当在不允许使用Null对象的Map中使用Null对象,会抛出一个NullPointerException 异常。
当尝试修改一个只读的Map时,会抛出一个UnsupportedOperationException异常。
参考资料: