java集合IdentityHashMap

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值