If you know in advance what the size of the ArrayList is
going to be, it is more efficient to specify the initial capacity. If you don't do this, the internal array will have to be repeatedly reallocated as the list grows.
An ArrayList object has a capacity and a size.
- The capacity is the total number of cells.
- The size is the number of cells that have data in them.
- Cells 0 up through size-1 have data in them.
- Data are added in order. Before cell N gets data, cells 0, 1, 2, ... N-1 must hold data.
The size increases by one each time an element is added. However, the capacity remains unchanged until the ArrayList is full. When an element is added to a full list, the Java
runtime system will greatly increase the capacity of the list so that many more elements can be added.
To find out the current size of an ArrayList use its size() method.
import java.lang.reflect.Field;
import java.util.ArrayList;
public class Test {
public static void main(String[] args) throws Exception {
ArrayList<Integer> list = new ArrayList<Integer>(3);
for (int i = 0; i < 17; i++) {
list.add(i);
System.out.format("Size: %2d, Capacity: %2d%n",
list.size(), getCapacity(list));
}
}
static int getCapacity(ArrayList<?> l) throws Exception {
Field dataField = ArrayList.class.getDeclaredField("elementData");
dataField.setAccessible(true);
return ((Object[]) dataField.get(l)).length;
}
}

被折叠的 条评论
为什么被折叠?



