这是来源
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。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)