集合容量的获取

来源:互联网 发布:自动记录足迹软件 编辑:程序博客网 时间:2024/06/04 18:40

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;    }}


0 0
原创粉丝点击