hashmap和hashtable的区别

本文对比了Hashtable和HashMap的区别,包括它们的继承父类、线程安全性、哈希码计算方法以及扩容机制。Hashtable的所有方法都是线程安全的,但牺牲了性能;HashMap则非线程安全,可能导致数据覆盖。HashMap的哈希码计算更复杂,使用位运算提高效率并减少冲突。此外,两者在扩容时的策略也有所不同。
摘要由CSDN通过智能技术生成

1. 继承的父类不同

******************************************************************************************************************************

2. 线程安全性不同、

hashtable里面的成员函数被synchronized修饰,影响了性能但是是线程安全的。

hashmap里面的成员函数没有被synchronized修饰,线程不安全,有可能导致“覆盖”等情况。

******************************************************************************************************************************

3. hashcode的计算方法不同

hashtable中就是对长度取余操作

hashMap中并没有直接使用KV中K原有的hash值; 在HashMap的put、get操作时也未直接使用K中原有的hash值,而使用了一个hash()方法。其中也调用了native方法使用C++进行hashcode计算。

使用了&运算符,右移16位来提高运算效率并减少哈希碰撞。太强了。

https://www.cnblogs.com/NathanYang/p/9427456.html

******************************************************************************************************************************

4.扩容的扩容量不同、初始化时机和初始化容量不同

https://blog.csdn.net/u010890358/article/details/80496144#%E6%89%A9%E5%AE%B9%E6%9C%BA%E5%88%B6%E6%A0%B8%E5%BF%83%E6%96%B9%E6%B3%95Node%3CK%2CV%3E%5B%5D%20resize%28%29

******************************************************************************************************************************

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值