Hashmap

HashMap是Java中一种基于散列实现的Map集合,它保证键的唯一性并允许多个null值。通过键获取关联值,使用hashCode()和equals()方法确保键的唯一性和定位。本文提供代码示例,展示HashMap的存取、删除操作,以及在Java8中哈希桶从链表转为平衡树的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*
*作者:呆萌老师
*☑csdn认证讲师
*☑51cto高级讲师
*☑腾讯课堂认证讲师
*☑网易云课堂认证讲师
*☑华为开发者学堂认证讲师
*☑爱奇艺千人名师计划成员
*在这里给大家分享技术、知识和生活
*各种干货,记得关注哦!
*vx:it_daimeng
*/

1、简介

                HashMap是一种双列集合,是Map类集合的一种具体实现类,其底层是采用散列来实现的。散列是一种在对其属性应用任何公式/算法后为任何变量/对象分配唯一代码的方法。在面向对象编程思想中,每一个对象都有一个哈希码,用来确保对象的独立。 

2、结构

3、特性

        键的唯一性。

        允许多个null值,一个null键。

··      是一个有序的集合。

        通过键关联相应的值,我们在检索值的时候,通过查询相应的键,检索其关联的值。

4、代码实例


        HashMap<Integer, String> map=new HashMap<Integer,String>();
        
        //存值  key ==>value 
        map.put(1, "张三");

        map.put(2, "李四");
        
        map.put(3, "王五");
        
        //取值
        System.out.println(map.get(1));
        
        //判断是否包含某个key
        System.out.println(map.containsKey(2));
        
        //判断是否包含某个value
        System.out.println(map.containsValue("李四"));
        
        //根据key删除
        map.remove(1);
        
        System.out.println(map);
        
        HashMap<String, String> map2=new HashMap<String,String>();
        
        map2.put("ip", "192.168.1.1");
        map2.put("browse","ie");
        map2.put("uname","sunwukong");
        
        map2.remove("ip");
        
        System.out.println(map2);
        


		HashMap<String, Person>  map=new HashMap<String,Person>();
		
		map.put("first",new Person("刘翔", 35));
		
		map.put("second",new Person("呆萌", 18));
		
		Person person=map.get("second");
		
		System.out.println(person.getName());
		
		//遍历方法1
		
		//1.先返回 字典对 集合 字典对是由key和value组成的
		Set<Entry<String, Person>> set=  map.entrySet();
		
		//用加强for的方式遍历所有的字典对
		for(Entry<String, Person> en:set)
		{
			System.out.println(en.getKey());
			Person person2=en.getValue();
			System.out.println(person2);
		}
		
		//2.用迭代器
		Iterator<Entry<String, Person>> iterator=   set.iterator();
		
		while(iterator.hasNext())
		{
			Entry<String, Person> entry=iterator.next();
			
			System.out.println(entry);
			
		}
		
		

5、重点了解

        ①需要Key 对象hashCode()来计算 Entry 对象的索引位置。对于键值使用哈希码计算哈希值,该哈希值用于计算对象在数组中的索引。

       ② Key 对象的equals()方法用于维护 map 中键的唯一性。

       ③ 空键的哈希码始终为零,并且始终存储在Entry[]的0索引中.。

        ④在java8中一旦哈希桶的项目数超过某个阈值,该桶将从链表切换到平衡树

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值