guava中Lists.newArrayListWithCapacity()的作用和实现原理

来源:互联网 发布:速卖通软件 编辑:程序博客网 时间:2024/06/05 21:16

list集合初始化的时候,若大小可知,应初始化固定大小的集合,也是个好习惯。
避免在add()元素的时候,要扩容,然后就得重新copy一遍元素,这样就不好啦。
ArrayList集合大概原理:就是一个Object数组,来存储值,然后知道这点之后,继续看下面的。
下面关于guava的Lists.newArrayListWithCapacity()初始化带大小的list集合的大概源码概览如下:


List<Person> persons = Lists.newArrayListWithCapacity(4);  @GwtCompatible(serializable = true)  public static <E> ArrayList<E> newArrayListWithCapacity(int initialArraySize) {    checkNonnegative(initialArraySize, "initialArraySize"); // for GWT.    return new ArrayList<E>(initialArraySize);  }  static int checkNonnegative(int value, String name) {    if (value < 0) {      throw new IllegalArgumentException(name + " cannot be negative but was: " + value);    }    return value;  }    public ArrayList(int initialCapacity) {        if (initialCapacity > 0) {            this.elementData = new Object[initialCapacity];        } else if (initialCapacity == 0) {            this.elementData = EMPTY_ELEMENTDATA;        } else {            throw new IllegalArgumentException("Illegal Capacity: "+                                               initialCapacity);        }    }    /**     * Shared empty array instance used for empty instances.     */    private static final Object[] EMPTY_ELEMENTDATA = {};


0 1
原创粉丝点击