Вопрос

У меня есть это:

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;
    }
}

и он бросает ArryIndexoutOfBoundSexception.

Я не знаю почему. Может ли кто -нибудь помочь мне?

Это было полезно?

Решение

Вы не можете установить элемент в Vector или любой другой List Если этот индекс еще не занят. Используя new Vector<Node<Key, Elem>>(2) вы гарантируете, что у вектора первоначально есть вместимость для двух элементов, но он все еще пуст и поэтому getТин или setИспользование любого индекса не будет работать.

Другими словами, список еще не стал достаточно большим, чтобы этот индекс был действительным. Вместо этого используйте это:

this.leftRight.add(null);  //index 0
this.leftRight.add(null);  //index 1

Вы также можете сделать:

this.leftRight.add(0, null);
this.leftRight.add(1, null);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top