Справка по Java ArrayList - PullRequest
       2

Справка по Java ArrayList

1 голос
/ 28 февраля 2011
import java.util.ArrayList;
public class WTFAMIDOINGWRONG 
{
    public static void main(String[] args)
    {
        ArrayList<Integer> intsAR = new ArrayList<Integer>(5);
        intsAR.add(3, 1);

    }
}

Итак, я дурачился с этим около часа, и у меня нет ни малейшего представления о том, что я могу делать неправильно.Независимо от того, что я делаю, он убежден, что arraylist не имеет размера, и поэтому все выходит за пределы.Если бы кто-нибудь мог сказать мне, что я делаю не так, я был бы очень благодарен.

Ответы [ 3 ]

4 голосов
/ 28 февраля 2011

ArrayList поддерживается array, поэтому при указании начальной емкости вы указываете, какой размер массива выделить. Это важно, потому что он определяет, сколько памяти ArrayList будет занимать последовательно.

Тем не менее, size из ArrayList указывает, сколько элементов на самом деле находится в списке. Когда список достигнет определенного размера (относительно емкости резервного массива), резервный массив будет перераспределен, чтобы занять дополнительное пространство.

Если вы хотите создать ArrayList из 10 элементов, все с 0, вы должны сделать:

List<Integer> list = new ArrayList<Integer>();
for ( int i = 0; i < 10; i++ ) {
   list.add(0);
}

Теперь вы можете вставить элемент в позицию 3 (или где-то посередине), если хотите.

0 голосов
/ 28 февраля 2011

Вы не можете вставить в пустой список в позиции 3 - что тогда будут первые 2 элемента? Только с пустым списком intsAR.add(0, 1); будет работать

0 голосов
/ 28 февраля 2011

Потому что size вашего list равен нулю. Да, вы на самом деле создаете его, указав initialCapacity, но это не значит size. Вы поняли мою точку зрения? Вы можете сказать, что только зарезервирует место для будущего.

Кстати, size() документация четко гласит, что это количество элементов в списке. Теперь, я надеюсь, вы знаете, что происходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...