HashMap、HashTable和ConcurrentHashMap的区别

本文详细介绍了HashMap、HashTable和ConcurrentHashMap的区别,HashMap非线程安全,适合单线程环境,而HashTable是线程安全的,但性能较低。ConcurrentHashMap在保证线程安全的同时提供高性能,通过分段锁实现并发控制。此外,文章还讨论了HashMap处理碰撞的方法以及面试中常见的问题,如为何使用String作为键。

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

HashMap、HashTable

简单点来说,HashTable是线程安全的HashMap,都实现了Map接口,Map接口对键值对进行映射。但还是有些不同,这里从三点来说:线程安全性,同步(synchronization),以及速度。

  • 我们先来看看HashMap的底层:

public class HashMap<K,V>
    extends AbstractMap<K,V>
    implements Map<K,V>, Cloneable, Serializable

不难看出, HashMap实现了 Cloneable, Serializable两大接口;

底层描述:HashMap底层是数组加链表的形式,基于hashing原理,我们通过put()和get()方法储存和获取对象。当我们将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算hashcode,让后找到bucket位置来储存值对象。当获取对象时,通过键对象的equals()方法找到正确的键值对,然后返回值对象。HashMap使用链表来解决碰撞问题,当发生碰撞了,对象将会储存在链表的下一个节点中。 HashMap在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值