以下是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 ArrayList
和ensureCapacity
方法的源代码:
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条件的目的。
答案 0 :(得分:2)
ensureCapacity
方法调用addAll
方法,ArrayList
方法public boolean addAll(Collection<? extends E> c) {
,ensureCapacity(size + numNew);
,numNew
,if (newCapacity < minCapacity)
,ImageView
,wrap_content
1}}可能是非常高的计数,这使得textview
可能返回TRUE。