IdentityhashMap 中key是对象的引用,
通过判断对引用是否相同,来判断key是否相同,
放入的对象值可以相同,只要两个对象的引用不相同就行了,
如果作为key的引用相同,新放入的值会覆盖原有的值 ,并把旧的值(value),返回
import java.util.IdentityHashMap;
import java.util.Iterator;
import java.util.Map.Entry;
import java.util.Set;
public class IdentityHashMapTest
{
public static void main(String[] args)
{
IdentityHashMap<String,Object> identityHashMap = new IdentityHashMap<String,Object>();
//放入一个键值对
String str1=new String("蓝蓝");
identityHashMap.put(str1, "first");
//放入另一个键值对:
String str2=new String("蓝蓝");
identityHashMap.put(str2, "second");
//因为这两个String对象,是两个不同的对象,只是对象的值相同,两个对象的引用是不相同的
System.out.println("str1==str2 :"+(str1==str2));
//通过键值对的Set集合遍历打印集合元素
System.out.println("遍历方式1:键值对Set集合的迭代器方式遍历键值对Set集合的-----------------------------");
Set<Entry<String,Object>> entry1=identityHashMap.entrySet();
Iterator<Entry<String, Object>> itentry1=entry1.iterator();
while(itentry1.hasNext())
{
Entry<String, Object> kv=itentry1.next();
String key=kv.getKey();
Object value=kv.getValue();
System.out.println("key="+key+"value="+value);
}
//
System.out.println("遍历方式2:foreach方式遍历键值对Set集合的-----------------------------");
for (Entry<String, Object> entry : identityHashMap.entrySet()) {
System.out.println("key="+entry.getKey() +"value="+entry.getValue());
}
//IdentityHashMap集合里面
System.out.println("集合面有 蓝蓝?:"+identityHashMap.containsKey("蓝蓝"));
System.out.println("通过“蓝蓝”取值:"+identityHashMap.get("xx"));
System.out.println("集合里面有\"蓝蓝\" 的引用 str1?:"+identityHashMap.containsKey(str1));
String str=str2;
System.out.println(identityHashMap);
Object str3=identityHashMap.put(str, "third");
System.out.println(identityHashMap);
System.out.println("str3="+str3);
/*IdentityhashMap 中key是对象的引用,
* 通过判断对引用是否相同,来判断key是否相同,
* 放入的对象值可以相同,只要两个对象的引用不相同就行了,
* 如果作为key的引用相同,新放入的值会覆盖原有的值 ,并把旧的值(value),返回
*/
}
}