HashMap与HashTable的区别

线程安全

  • HashMap是非线程安全的
  • HashTable是线程安全的,内部方法基本都有synchronized修饰

效率
因为线程安全问题,HashMap比HashTable效率要高一点

null key 与null value

  • HashMap中,null可以作为键,但有且只有一个,但是可以有多个null值
  • HashTable里,键值里面只要输入进一个null,直接抛出NullPointerException

初始容量与扩容不同

  • 创建时如果不指定容量初始值,HashTable默认初始大小为11,扩容变为原来的2n+1。HashMap默认初始值为16,扩容变为原来的2倍。
  • 创建时如果指点容量初始值,HashTable直接使用给定的大小,而HashMap会将其扩充为2的幂次方大小。

底层数据结构
JDK1.8以后HashMap在解决哈希冲突有了较大的变化,当链表长度大于阈值(默认为8)时,将链表转化为红黑树,以减少搜索时间。HashTable
没这样的机制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值