Java ArrayList IndexOutOfBoundsException尽管提供了初始容量

Java ArrayList IndexOutOfBoundsException尽管提供了初始容量,第1张

Java ArrayList IndexOutOfBoundsException尽管提供了初始容量

这是来源

ArrayList

构造函数

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

您致电

set(int, E)

public E set(int index, E element) {     rangeCheck(index);       E oldValue = elementData(index);     elementData[index] = element;     return oldValue;}

Set
电话
rangeCheck(int)

private void rangeCheck(int index) {    if (index >= size) {         throw new IndexOutOfBoundsException(outOfBoundsMsg(index));    }}

它可能很微妙,但是当您调用构造函数时,尽管初始化了an

Object[]
,但您并未初始化
size
。因此,从中
rangeCheck
,您会得到
IndexOutOfBoundsException
,因为它
size
是0。因此
set(int,E)
,您可以使用
add(Ee)
(在您的情况下,将
e
类型添加
E
到列表的末尾)来代替使用,
add(1)
而这不会发生。或者,如果适合您,则可以按照另一个答案中的建议将所有元素初始化为0。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5616211.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存