Я хочу использовать ArrayList (или какую-либо другую коллекцию), например, как я бы использовал стандартный массив.
В частности, я хочу, чтобы он начинался с начального размера (скажем, SIZE) и могчтобы установить элементы явно сразу,
например,
array[4] = "stuff";
может быть записано
array.set(4, "stuff");
Однако следующий код выдает исключение IndexOutOfBoundsException:
ArrayList<Object> array = new ArrayList<Object>(SIZE);
array.set(4, "stuff"); //wah wahhh
Я знаю, что есть несколько способов сделать это, но мне было интересно, есть ли такой, который нравится людям, или, возможно, лучшая коллекция для использования.В настоящее время я использую код, подобный следующему:
ArrayList<Object> array = new ArrayList<Object>(SIZE);
for(int i = 0; i < SIZE; i++) {
array.add(null);
}
array.set(4, "stuff"); //hooray...
Единственная причина, которую я даже спрашиваю, состоит в том, что я делаю это в цикле, который потенциально может выполняться несколько раз (десятки тысяч).Учитывая, что поведение изменения размера ArrayList «не указано», я бы предпочел не тратить время на изменение размера себя или памяти на дополнительные, неиспользуемые места в массиве, который его поддерживает.Однако это может быть спорным вопросом, поскольку я буду заполнять массив (почти всегда каждую ячейку в массиве) полностью вызовами array.set (), и никогда не превысит емкость?
Я бы предпочел просто использовать обычный массив, но мои спецификации требуют, чтобы я использовал коллекцию.