HashMap原理和面试问题总结

本文详细介绍了HashMap的原理,包括其无序性、默认初始容量和负载因子、基于hashcode和equals方法处理冲突的方式。此外,对比了HashMap与Hashtable的区别,强调了线程安全性和HashMap的常用操作。通过对HashMap的深入理解,有助于更好地掌握Java集合框架。
摘要由CSDN通过智能技术生成
一、首先先熟悉一下HashMap
  1. HashMap基于Map接口实现,元素以键值对的方式存储,并且允许使用null 建和null值,因为key不允许重复,因此只能有一个键为null.
  2. 另外HashMap不能保证放入元素的顺序,它是无序的,和放入的顺序并不能相同。
  3. HashMap不能保证随着时间的推移Map中的元素次序是不变的。
  4. HashMap基于hashing原理,当我们将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算hashcode,让后找到bucket位置来储存值对象。当获取对象时,通过键对象的equals()方法找到正确的键值对,然后返回值对象。
  5. HashMap的基本属性:
    默认初始值大小为16,负载因子0.75(在容量使用达到12的时候会自动扩容,容量为之前的两倍)

这里提一下关于将引用对象当做map的key的注意问题,假设我们定义一个map范型为我们自己的对象:Map<Student,String> map = new HashMap();
对象a:a.setName(“一号”)a.setSex(“男”);
对象c:c.setName(“一号”)c.setSex(“男”);
map.put(a, “123”);
map.put(c,“222”);
System.out.println(“map中获取对象c:”+map.get(a));
System.out.println(“map中获取对象b:”+map.get©);
输出:123 222
按我们之前的初步理解可能会理解为a对象和c对象是一模一样的&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值