Во время работы над ArrayList, я обнаружил, что после установки начального размера массива с помощью конструктора с initialCapacity, тогда использование set() будет генерировать исключение, хотя массив создан, но размер не установлен правильно.
Использование ensureCapacity() не будет работать, потому что оно основано на массиве elementData вместо size.
Существуют и другие побочные эффекты из-за статического DEFAULT_CAPACITY с ensureCapacity().
Единственный способ сделать эту работу - использовать add() столько раз, сколько требуется после использования конструктора.
Пожалуйста, проверьте код ниже.
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
List test = new ArrayList(10);
test.set(5, "test");
System.out.println(test.size());
}
Я не уверен, почему java выбрасывает это исключение.
Поведение, которое я ожидал: test.size() должен возвращать 10, и установить (5,...) должно работать.
АКТУАЛЬНО: выбрасывает исключение IndexOutOfBoundsException.
Так возникает метод set, вызывающий проблему?