初始化Vector上的ArrayIndexOutOfBoundsException

时间:2011-03-15 20:10:15

标签: java vector indexoutofboundsexception

我有这个:

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。

我不知道为什么。有人能帮助我吗?

1 个答案:

答案 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);