diff --git a/docs/java/collection/arraylist-source-code.md b/docs/java/collection/arraylist-source-code.md index a74fd29e..5c71801b 100644 --- a/docs/java/collection/arraylist-source-code.md +++ b/docs/java/collection/arraylist-source-code.md @@ -159,19 +159,22 @@ public class ArrayList extends AbstractList * @param minCapacity 所需的最小容量 */ public void ensureCapacity(int minCapacity) { - //如果是true,minExpand的值为0,如果是false,minExpand的值为10 + // 如果不是默认空数组,则minExpand的值为0; + // 如果是默认空数组,则minExpand的值为10 int minExpand = (elementData != DEFAULTCAPACITY_EMPTY_ELEMENTDATA) - // any size if not default element table + // 如果不是默认元素表,则可以使用任意大小 ? 0 - // larger than default for default empty table. It's already - // supposed to be at default size. + // 如果是默认空数组,它应该已经是默认大小 : DEFAULT_CAPACITY; - //如果最小容量大于已有的最大容量 + + // 如果最小容量大于已有的最大容量 if (minCapacity > minExpand) { + // 根据需要的最小容量,确保容量足够 ensureExplicitCapacity(minCapacity); } } + // 根据给定的最小容量和当前数组元素来计算所需容量。 private static int calculateCapacity(Object[] elementData, int minCapacity) { // 如果当前数组元素为空数组(初始情况),返回默认容量和最小容量中的较大值作为所需容量 @@ -429,8 +432,7 @@ public class ArrayList extends AbstractList } /* - * Private remove method that skips bounds checking and does not - * return the value removed. + * 该方法为私有的移除方法,跳过了边界检查,并且不返回被移除的值。 */ private void fastRemove(int index) { modCount++; @@ -438,7 +440,7 @@ public class ArrayList extends AbstractList if (numMoved > 0) System.arraycopy(elementData, index + 1, elementData, index, numMoved); - elementData[--size] = null; // clear to let GC do its work + elementData[--size] = null; // 在移除元素后,将该位置的元素设为 null,以便垃圾回收器(GC)能够回收该元素。 } /**