Предположим, я объявляю массив int
размером 10, я могу добавить элемент к его 4-му индексу, я могу запустить код без каких-либо исключений.
int[] ar = new int[10];
ar[4] = 8;
System.out.println(Arrays.toString(ar)); //works fine
Это потому, что если я скажу size как 10, для этого массива будет выделено столько памяти, а в каждом индексе будет сохранено начальное значение его типа.
Но дело не в этомто же самое в List
.Скажем, я объявляю список с начальной емкостью 10 и пытаюсь добавить элемент к его 4-му индексу, он дает
java.lang.IndexOutOfBoundsException: Index: 4, Size: 0
List<Integer> list = new ArrayList<Integer>(10);
list.add(4, 8); //exception
Конечно, размер списка вернет 0
, даже если указана начальная емкость.Почему это не похоже на Array, я думаю, что для 10 элементов списка не выделяется память?
Я догадывался, что есть ли способ заполнить List значениями по умолчанию, если емкость задана так же, как массив.