java – JDK API文档对于ArrayList构造函数是不正确的.这是一个bug吗?

前端之家收集整理的这篇文章主要介绍了java – JDK API文档对于ArrayList构造函数是不正确的.这是一个bug吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
ArrayList constructor的JDK doc表示初始容量为10.

这实际上是错误的,因为初始容量为0,直到添加到列表中.我检查了开源JDK的源代码以及JDK附带的src.zip.

我明白这是一个性能优化,但这会被认为是一个错误

解决方法

仅适用于JDK,最多6个

这不是错误.

用于存储列表元素的内部数组的初始容量真的是10.

这并不意味着列表的大小是10.只有一个大小为10的空数组才被创建.

当一个对象被添加到列表中时,一个到最后一个元素的内部指针移动到一个.如果数组的容量不够,则会创建一个更高容量的另一个数组,并将旧数组复制到新数组的第一部分.在这一刻,阵列的容量不会超过10.

代码是:

public ArrayList() {
    this(10);   // Here the 10 of the default capacity
}

public ArrayList(int initialCapacity) {
    super();
    if (initialCapacity < 0)
        throw new IllegalArgumentException("Illegal Capacity: "+
                                                initialCapacity);
    this.elementData = new Object[initialCapacity];
}

对于较新的JDK(来自java 1.7)

注意:在更新的ArrayList(我认为从Java7)的源代码已经改变了.文件仍然是旧的.所以是的,这是文档上的错误

这里是新版本的构造函数

private static final Object[] EMPTY_ELEMENTDATA = {};

....

public ArrayList() {
    super();
    this.elementData = EMPTY_ELEMENTDATA;  // This is 0 capacity!!!!
}

注意:我向Oracle打开了一个新的错误,以查看文档.

原文链接:https://www.f2er.com/java/124223.html

猜你在找的Java相关文章