java集合IdentityHashMap

来源:互联网 发布:阿里云邮箱注册页面 编辑:程序博客网 时间:2024/05/16 05:55

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),返回 */}}