2016-06-27 5 views
-4

Я пытаюсь добавить строку в мой массив в 3-ей позиции, потому что мне нужно сделать это для цикла, который я выполняю после него.добавить переменную в массив в определенной позиции

ArrayList<String> namesArray = new ArrayList<>(); 
namesArray.add(3, mString); 

Это дает возможность выйти из-под контроля, это невозможно сделать?

java.lang.IndexOutOfBoundsException: Invalid index 3, size is 0 
+0

Не могли бы вы показать определение массива? – SpaceCore186

+0

показать полный код – alway5dotcom

+0

еще раз проверьте его –

ответ

2

Когда вы говорите

arrayList.add(n, value); 

результатом является то, что после add, arrayList.get(n) будет иметь это значение. Вы пытаетесь устроить так, чтобы arrayList.get(3) был mString. Однако ArrayList должен быть списком последовательных элементов; он не может быть «разреженным массивом». То есть, для arrayList.get(3) существует, arrayList.get(0), arrayList.get(1) и arrayList.get(2) также должны существовать.

Я не знаю, что вы хотите, чтобы эти значения были (возможно, null?), Но вам нужно их установить. Java ArrayList не имеет метода add, который автоматически заполняет промежуток значением по умолчанию. Вы можете добавить 3 nulls в массив следующим образом:

arrayList.addAll(Arrays.asList(new String[3])); 
-1

Вы должны заполнить массив с пустой строкой перед тем индексом 3, как это:

namesArray.add(""); 
namesArray.add(""); 
namesArray.add(""); 

Тогда вы не получите, что исключение

Смежные вопросы