我有这个:
public class DoubleList<Key, Elem> implements ADTDoubleList<Key, Elem> {
private Vector<Node<Key, Elem>> leftRight = new Vector<Node<Key, Elem>>(2);
private int[] numLeftNumRight = new int[2];
public DoubleList() {
this.leftRight.set(0, null);
this.leftRight.set(1, null);
this.numLeftNumRight[0] = 0;
this.numLeftNumRight[1] = 0;
}
}
并抛出ArrayIndexOutOfBoundsException。
我不知道为什么。有人能帮助我吗?
答案 0 :(得分:4)
如果该索引尚未被占用,则无法在Vector
或任何其他List
中设置元素。通过使用new Vector<Node<Key, Elem>>(2)
,您确保向量最初具有两个元素的容量,但它仍为空,因此get
ting或set
使用任何索引都不起作用。
换句话说,该列表还没有大到足以使该索引有效。请改用:
this.leftRight.add(null); //index 0
this.leftRight.add(null); //index 1
你也可以这样做:
this.leftRight.add(0, null);
this.leftRight.add(1, null);