【记录】HashMap

1.HashMap的概念

HashMap(基于哈希表的Map接口的实现)是Java集合框架中的一个分支,采用键值对(key,value)的格式存储数据。HashMap是一种散列表,它通过哈希函数将元素的键映射到数组中的一个位置,从而实现快速的插入、删除和查找操作。HashMap允许键和值为null,并且不保证它们的顺序。


2.HashMap的优点

  • 查找,插入,删除速度快。在HashMap中,直接通过map.get(key)查找的的时候,首先会自动计算出key对应的哈希码,然后找到该哈希码对应的值,时间复杂度是O(1)。
  • 易于拓展,灵活。HashMap中可以随意插入删除修改数据等操作,同时HashMap还支持动态扩容,当存储的键值对数量超过了容量的75%时,会自动触发扩容操作,以保证操作效率和内存占用的平衡。
  • 键和值支持任意类型的数据,使得HashMap的使用更加灵活,适应大多场景。键和值还允许null的存储,这在有些情况下可以避免空指针异常。

3.HashMap的基本原理

HashMap内部有一个哈希表(table),当向HashMap存入(put)数据的时候,会先根据键计算出哈希码然后存储在table中,所以HashMap存储数据是无序的;

有一种特殊情况是当put一个新数据的时候,所计算出的哈希码对应table中已经存储了一对数据,也就是发生了哈希冲突(多个key经过哈希计算后的索引相同),HashMap会将这些数据用链表的方式存储在同一个位置,具体而言就是新的数据会被插入到同一位置的链表头部。Java 8引入了红黑树来优化链表的性能,当同一个位置上的链表长度超过阈值(默认为8)时,链表会被转换为红黑树。红黑树的插入、查找等操作时间复杂度较低,因此可以提高HashMap在处理大量键值对时的性能。

总结起来,HashMap使用链表法或红黑树法来存储具有相同哈希码的键值对,保证了效率和可靠性。不同的冲突解决方法可以根据具体情况进行选择,使HashMap能够在不同的数据规模和访问模式下都具有良好的性能。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值