Аргумент конструктора ArrayList
не является размером списка, так как ваш код принимает; это емкость базового хранилища, используемого структурой данных.
Емкость будет увеличиваться по мере необходимости при добавлении элементов в список. Единственная причина, указывающая начальную емкость в конструкторе, заключается в том, чтобы предварительно выделить большую емкость, если вы знаете, что собираетесь добавлять много элементов. Это означает, что базовый массив не должен слишком часто меняться, когда вы добавляете его.
Независимо от того, какое значение вы укажете в ArrayList
конструкторе размер списка определяется только тем, что вы положили в него, так что вы не можете получить деталь с index
1 до тех пор, пока вы добавили в менее 2 элементов.
Чтобы быть более ясным, что это на самом деле, что вы не можете вставить элемент в индекс, который еще не существует. –
Не следует угадывать мудрость здесь, но не делает 3-й add() в вышеупомянутом решении * shift * содержимым, так что значение1 теперь находится в индексе 2, а не 1? Док в add() с индексом указывает на это. Я считаю, что содержимое массива после этого будет {value2, null, value1}. – rfeak