Skip to content

Commit

Permalink
Merge pull request CyC2018#1017 from Xunzhuo/patch-4
Browse files Browse the repository at this point in the history
修复ArrayList扩容机制的问题
  • Loading branch information
CyC2018 authored Nov 18, 2020
2 parents 3697796 + bc23085 commit e747868
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion notes/Java 容器.md
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ private static final int DEFAULT_CAPACITY = 10;

#### 2. 扩容

添加元素时使用 ensureCapacityInternal() 方法来保证容量足够如果不够时需要使用 grow() 方法进行扩容新容量的大小为 `oldCapacity + (oldCapacity \>\> 1)`,也就是旧容量的 1.5
添加元素时使用 ensureCapacityInternal() 方法来保证容量足够如果不够时需要使用 grow() 方法进行扩容新容量的大小为 `oldCapacity + (oldCapacity >> 1)`,也就是旧容量的 1.5 倍左右,(oldCapacity 为偶数就是 1.5 oldCapacity为奇数就是 1.5 -0.5)。奇偶不同比如8+8/2 = 12, 13+13/2=19如果是奇数的话会丢掉小数

扩容操作需要调用 `Arrays.copyOf()` 把原数组整个复制到新数组中这个操作代价很高因此最好在创建 ArrayList 对象时就指定大概的容量大小减少扩容操作的次数

Expand Down

0 comments on commit e747868

Please sign in to comment.