gpt4 book ai didi

java - ArrayList 的 add(index,object) 方法抛出 IndexOutOfBoundException

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:44:26 26 4
gpt4 key购买 nike

关于使用下面提到的代码片段创建 arrayList:

List arrayList = new ArrayList(16);

ArrayList 的内部实现创建一个大小为 16 的数组 elementData 并在每个位置分配 null。在执行类似 arrayList.add(2,"HelloWorld") 的操作时,会给出一个 IndexOutOfBoundException 作为添加元素的索引(即2) 大于 arrayListsize 属性。

从 javaDocs 中可以清楚地看出,当 arrayList 初始化并递增 1 时,arrayList 的 size 属性被初始化为 0每次将新元素添加到 arrayList

谁能解释一下,为什么 ArrayList dataStructure 首先是这样设计的。即使内部 dataStructure elementData 在创建 arrayList 时被初始化为 16 个空值,它仍然不允许在 indeces > size 处添加值; (假设在这种情况下索引 <16)。实现 add(index,object) 的想法是什么由 arrayList 的大小属性控制的功能?

最佳答案

拥有一个大小大于 List.size() 的内部数组的目的是避免不必要地重新分配数组。如果内部数组的大小始终与 List 相同,则每次添加新元素时,都必须重新分配内部数组,从而导致性能下降。

关于java - ArrayList 的 add(index,object) 方法抛出 IndexOutOfBoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29229928/

26 4 0