浅谈HashMap与HashTable

最近去面试,面试官问了我一个问题,HashMap与HashTable有什么区别?我当时一脸懵B,没能完整答上来。于是,我整理了此文。

HashMap与HashTable的区别:

  1. HashMap是线程不安全的,HashTable是线程安全的,它的内部方 法基本都是synchronized
  2. HashMap的键和值都是允许为null的,而HashTable则不行
  3. 因为HashMap是线程安全的,所以它比HashTable的效率高

那问题来了,什么是线程安全,什么又是线程不安全呢?

线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问,直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。
线程不安全就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得的数据是脏数据。


HashMap与HashTable的底层实现是什么呢?

HashMap与 HashTable的内部存储结构都采用了相同的存储机制—哈希表(散列表)。二者的实现基本一致。
采用哈希表的好处是:这种数据结构综合了数组和链表的优点,所以具有较快的查询速度,以及相对较快的增删速度,很适合在海量数据的环境中使用。


想要深入了解HashMap与HashTable的内部实现机制,请参考终点大神的深入解析HashMap、HashTable

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值