
java
tebukaopu148
这个作者很懒,什么都没留下…
展开
-
hashmap
为什么转红黑树需要链表长度大于8且容量大于64? 因为红黑树需要进行左旋,右旋,变色操作来保持平衡, 所以当数组长度小于64,使用数组加链表比使用红黑树查询速度要更快、效率要更高 为什么默认加载因子是0.75? 加载因子大于1时,hash碰撞概率较高,会导致查询效率降低(时间换空间) 加载因子小于0.5时,hash碰撞概率低,会不断扩容,浪费空间(空间换时间) 0.50.50.5…极限约等于0.688…,0.5表示发生数组元素要么hash碰撞,要么不碰撞 java折中取值0.75 为什么链表转红黑树的阈值是原创 2022-02-16 18:02:58 · 352 阅读 · 0 评论 -
arraylist
一、为啥arraylist的扩容因子是1.5? 首先要明确 左移右移 的操作符是直接对应cpu硬件指令的,也就是从cpu层面上来说,位运算是直接比乘除效率更高; 对于一些特定的算法可以利用位运算的方法,但是大部分计算还是通过浮点运算 例如:就像除以2,除以4 都可以用>>1和>>2替代,但是像乘以0.2这种就只能用浮点运算,计算机是没办法右移log2的5次方) 回到题目为什么扩容因子是1.5,而不是1.2,1.25,1.8或者1.75 先从位运算层面分析: 1.5 -> n.原创 2022-02-11 22:49:38 · 719 阅读 · 0 评论