Java

Какой список лучше использовать ArrayList от LinkedList Java?

Подскажите пожалуйста, пытаюсь разобраться со списками, перечитал интересную статью на хабрахабр. ru / post / 162017/ но всё равно остался вопрос: Условие: нужно вставить 1000000 элементов в конец списка, без намерения в дальнейшем их использовать, какой список лучше выбрать и почем (ArrayList от LinkedList)? Условие номер два: тоже самое но, уже с намерением чтения этих элементов (не удаление, не перемещение). Спасибо!
KK
Kusha Kadyrov
103
Они оба хороши, каждый для своих нужд. Именно поэтому они оба до сих пор и существуют. Если бы один был лучше другого во всех отношениях и в любом случае, один бы и оставили.

LinkedList дает возможность быстро удалять элементы из случайных позиций -- сложность по времени O(1). При этом поиск элемента у него составляет O(N).
ArrayList -- всё с точностью до наоборот. Поиск O(1) - то есть всегда с одной и той же гарантированной скоростью, а вот удаление из случайной позиции (не только в конце) = O(N).

P.s. Обратите внимание на HashSet.
Bek Bek
Bek Bek
215
Лучший ответ
" без намерения в дальнейшем их использовать"....
убил...
Kusha Kadyrov Александр, живите прошу Вас!:) Этим я акцентировал, что меня интересует где ИМЕННО вставка быстрее, и чтобы отбросить дальнейшие вопросы аля " а что дальше с ними собираетесь делать?"
LinkedList можно быстро добавлять элементы, но очень медленный доступ по индексу (хорош только для перебора энумератором for each циклом). Там нет прямого доступа по индексу. Чтобы дойти до нужного элемента, придётся перебирать всех предшественников (или последующие, в зависимости от того, откуда ближе).
ArrayList хорош и для добавления и для доступа по индексу, но добавление всё же чуть медленнее, чем у LinkedList, потому что иногда требуется массив динамически увеличивать и перегонять в новый массив все элементы. Удаление медленное.
Если требуется только добавлять, но не использовать (нафиг только он нужен тогда?), то конечно LinkedList.
Алексей Яцышин То, что я написал, это всё теория. Но практика показывает, что ArrayList быстрее справляется с добавлением, чем LinkedList. В интернете пишут, что причина в том, что LinkedList при каждом отдельном добавлении запрашивает память для создания узла, в то время как ArrayList делает это крайне редко.
получение, set, add и т. п. - arraylist
добавление дохера данных и удаление - linkedlist

в остальном, array, лучше linked'а

тут подробно показано
https://habrahabr.ru/post/233797/
когда что использовать лучше
Kusha Kadyrov а если просто вставить в конец списка много элементов?