mirror of
https://github.com/Snailclimb/JavaGuide
synced 2025-06-16 18:10:13 +08:00
Update ArrayList-Grow.md
This commit is contained in:
parent
311b0bdc85
commit
2d59232744
@ -145,7 +145,7 @@
|
||||
}
|
||||
```
|
||||
|
||||
**int newCapacity = oldCapacity + (oldCapacity >> 1),所以在capacity是偶数的情况下,ArrayList 每次扩容之后容量都会变为原来的 1.5 倍,当capacity为奇数时(自己初始化容量时可能出现),第一次扩容容量变为oldCapacity + (oldCapacity - 1) / 2(在计算机运算的情况下减一除和直接除没有差别,对于整数会自动舍掉小数位),也就是说每次扩容相当于计算机中的1.5倍。 !** 记清楚了!不是网上很多人说的 1.5 倍+1!当然了,第一次扩容以后capacity会变为偶数,之后的每次扩容都会是原容量的1.5倍了。
|
||||
**int newCapacity = oldCapacity + (oldCapacity >> 1),所以 ArrayList 每次扩容之后容量都会变为原来的 1.5 倍!** 记清楚了!不是网上很多人说的 1.5 倍+1!
|
||||
|
||||
> ">>"(移位运算符):>>1 右移一位相当于除2,右移n位相当于除以 2 的 n 次方。这里 oldCapacity 明显右移了1位所以相当于oldCapacity /2。对于大数据的2进制运算,位移运算符比那些普通运算符的运算要快很多,因为程序仅仅移动一下而已,不去计算,这样提高了效率,节省了资源
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user