это довольно быстро.

довал запредыдущий пост на это что говорит:

Для LinkedList

получить это O (N)добавить O (1)удалить это O (n)Iterator.remove - это O (1)

Для ArrayList

получить это O (1)add это O (1) амортизируется, но O (n) худший случай, так как размер массива должен быть изменен и скопированудалить это O (n)

Поэтому, посмотрев на это, я пришел к выводу, что, если мне нужно сделать просто последовательную вставку в мою коллекцию, скажем, для 5000000 элементов,LinkedList будет превосходитьArrayList.

И если мне нужно просто извлечь элементы из коллекции, выполнив итерацию, т.е. не захватывая элемент посередине, все равноLinkedList превзойдет ArrayList.

Теперь, чтобы проверить мои вышеупомянутые два утверждения, я написал ниже пример программы… Но я удивлен, что мои вышеупомянутые утверждения оказались неверными.

ArrayList превосходилLinkedlist в обоих случаях. Это заняло меньше времени, чемLinkedList для добавления, а также извлечения их из коллекции. Есть ли что-то, что я делаю не так, или первоначальные заявления оLinkedList а такжеArrayList не относится к коллекциям размером 5000000?

Я упомянул размер, потому что, если я уменьшу количество элементов до 50000,LinkedList работает лучше, и первоначальные утверждения верны.

long nano1 = System.nanoTime();

List<Integer> arr = new ArrayList();
for(int i = 0; i < 5000000; ++i) {
    arr.add(i);
}
System.out.println( (System.nanoTime() - nano1) );

for(int j : arr) {
    ;
}
System.out.println( (System.nanoTime() - nano1) );

long nano2 = System.nanoTime();

List<Integer> arrL = new LinkedList();
for(int i = 0; i < 5000000; ++i) {
    arrL.add(i);
}
System.out.println( (System.nanoTime() - nano2) );

for(int j : arrL) {
    ;
}
System.out.println( (System.nanoTime() - nano2) );

Ответы на вопрос(9)

Ваш ответ на вопрос