ArrayList源代码中容量检查IF条件的用途是什么

时间:2018-02-28 11:43:56

标签: java arraylist

以下是import pandas as pd d = {'Company':['A','A','A','B','B','B','C','C','C'],'Individual': [1,2,3,1,4,5,3,6,7]} df = pd.DataFrame(d).groupby('Individual')['Company'].apply(list).reset_index() companies = df.loc[df['Company'].map(len)>1, 'Company'].tolist() # [['A', 'B'], ['A', 'C']] &#39 ArrayListensureCapacity方法的源代码:

add

现在,使用此代码,我们几乎将容量增加一倍,当我们调用此public boolean add(E e) { ensureCapacity(size + 1); // Increments modCount!! elementData[size++] = e; return true; } public void ensureCapacity(int minCapacity) { modCount++; int oldCapacity = elementData.length; if (minCapacity > oldCapacity) { Object oldData[] = elementData; int newCapacity = (oldCapacity * 3) / 2 + 1; if (newCapacity < minCapacity) newCapacity = minCapacity; // minCapacity is usually close to size, so this is a win: elementData = Arrays.copyOf(elementData, newCapacity); } } 方法时,它被称为ensureCapacity

因此,考虑到AL的总容量为10,并且给定的迭代当前大小为10,因此确保容量将被称为ensureCapacity(size + 1);,当此方法执行时,ensureCapacity(11)将变为16并且newCapacity将为11,因此minCapacity将返回FALSE,并且每当AL的容量增加时,情况总是如此。

现在,如果if (newCapacity < minCapacity)总是返回FALSE,那么这个IF条件的用途是什么。我知道JDK源代码经过了大量的同行评审,所以很有可能我错过了一些东西,请帮我确定这个IF条件的目的。

1 个答案:

答案 0 :(得分:2)

ensureCapacity方法调用addAll方法,ArrayList方法public boolean addAll(Collection<? extends E> c) {ensureCapacity(size + numNew);numNewif (newCapacity < minCapacity)ImageViewwrap_content 1}}可能是非常高的计数,这使得textview可能返回TRUE。