ArrayList list = new ArrayList(20);
for( int i = 0 ; i < 30 ; i ++){
list.add(new Integer(i));
}
System.out.print(list.size());
为什么我设定List的初始容量为20,咋还能装入30个对象呢!!!
for( int i = 0 ; i < 30 ; i ++){
list.add(new Integer(i));
}
System.out.print(list.size());
为什么我设定List的初始容量为20,咋还能装入30个对象呢!!!
* Increases the capacity of this <tt>ArrayList</tt> instance, if
* necessary, to ensure that it can hold at least the number of elements
* specified by the minimum capacity argument.
*
* @param minCapacity the desired minimum capacity.
*/
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;
elementData = (E[])new Object[newCapacity];
System.arraycopy(oldData, 0, elementData, 0, size);
}
}
ArrayList会自动增加容量的。
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;
elementData = new Object[newCapacity];
System.arraycopy(oldData, 0, elementData, 0, size);
}
}