ArrayIndexoutOfBoundSexception на инициализированном векторе
-
24-10-2019 - |
Вопрос
У меня есть это:
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);
Не связан с StackOverflow