本文共 452 字,大约阅读时间需要 1 分钟。
(一)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,然后进行与运算;
三,强软弱虚引用
四,容器的同步控制和只读设置