Java源码系列(一)集合

本文深入探讨了Java中HashMap、Hashtable等集合类的工作原理,包括底层数据结构、扩容策略及线程安全性等方面,并对不同引用类型进行了对比分析。

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

(一)hashCode()和equals

如上:在hashmap的底层实现是链表+数组:

(二)那些年实现过的源码

Stringbuffer(Stringbuilder):内部由数组实现  ;扩容为每次变为原来的2倍+2;区别Stringbuffer的方法线程安全,使用了重量级锁synchronized,修饰了所有方法

ArrayList(Vector):内部是数组,每次扩容为原来的1.5,vector线程安全,

hashmap的装填因子:0.75


以上是jdk1.8的源码,当拉米塔=0.5时,也就是期望和方差都是0.5时;

二:hashmap和hashtable  以及Properties



hashmap继承自abstructMap抽象类,线程不安全  ,而hashtable继承自dictionary接口线程安全

hashMap的putval方法:由put方法包装,因为n是2的整数次幂,所以这里使用了n-1,就得到了,所有位都是1,然后进行与运算;

三,强软弱虚引用




四,容器的同步控制和只读设置




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值