Java
Какой список лучше использовать ArrayList от LinkedList Java?
Подскажите пожалуйста, пытаюсь разобраться со списками, перечитал интересную статью на хабрахабр. ru / post / 162017/ но всё равно остался вопрос: Условие: нужно вставить 1000000 элементов в конец списка, без намерения в дальнейшем их использовать, какой список лучше выбрать и почем (ArrayList от LinkedList)? Условие номер два: тоже самое но, уже с намерением чтения этих элементов (не удаление, не перемещение). Спасибо!
Они оба хороши, каждый для своих нужд. Именно поэтому они оба до сих пор и существуют. Если бы один был лучше другого во всех отношениях и в любом случае, один бы и оставили.
LinkedList дает возможность быстро удалять элементы из случайных позиций -- сложность по времени O(1). При этом поиск элемента у него составляет O(N).
ArrayList -- всё с точностью до наоборот. Поиск O(1) - то есть всегда с одной и той же гарантированной скоростью, а вот удаление из случайной позиции (не только в конце) = O(N).
P.s. Обратите внимание на HashSet.

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

" без намерения в дальнейшем их использовать"....
убил...
убил...
Kusha Kadyrov
Александр, живите прошу Вас!:) Этим я акцентировал, что меня интересует где ИМЕННО вставка быстрее, и чтобы отбросить дальнейшие вопросы аля " а что дальше с ними собираетесь делать?"
LinkedList можно быстро добавлять элементы, но очень медленный доступ по индексу (хорош только для перебора энумератором for each циклом). Там нет прямого доступа по индексу. Чтобы дойти до нужного элемента, придётся перебирать всех предшественников (или последующие, в зависимости от того, откуда ближе).
ArrayList хорош и для добавления и для доступа по индексу, но добавление всё же чуть медленнее, чем у LinkedList, потому что иногда требуется массив динамически увеличивать и перегонять в новый массив все элементы. Удаление медленное.
Если требуется только добавлять, но не использовать (нафиг только он нужен тогда?), то конечно LinkedList.
ArrayList хорош и для добавления и для доступа по индексу, но добавление всё же чуть медленнее, чем у LinkedList, потому что иногда требуется массив динамически увеличивать и перегонять в новый массив все элементы. Удаление медленное.
Если требуется только добавлять, но не использовать (нафиг только он нужен тогда?), то конечно LinkedList.
Алексей Яцышин
То, что я написал, это всё теория. Но практика показывает, что ArrayList быстрее справляется с добавлением, чем LinkedList. В интернете пишут, что причина в том, что LinkedList при каждом отдельном добавлении запрашивает память для создания узла, в то время как ArrayList делает это крайне редко.
получение, set, add и т. п. - arraylist
добавление дохера данных и удаление - linkedlist
в остальном, array, лучше linked'а
тут подробно показано
https://habrahabr.ru/post/233797/
когда что использовать лучше
добавление дохера данных и удаление - linkedlist
в остальном, array, лучше linked'а
тут подробно показано
https://habrahabr.ru/post/233797/
когда что использовать лучше
Kusha Kadyrov
а если просто вставить в конец списка много элементов?
Похожие вопросы
- Java списочный массив ArrayList
- Всем привет. Помогите плз. Мне нужна помощь тех кто действительно хорошо знает Java т. к мне нужно выбрать один из курсов
- Помогите доделать код на java. В форму пользователь вводит символ, который нужно заменить на #.
- Не выводит изображение в JAVA
- Java проблема с рефлексией.
- Java Developer vs Android Developer. Куда дальше?
- Пишут ли стартапы на Java?
- С какой книги начинать изучение Java?
- Помогите сделать java приложение! { СРОЧНО }
- Java и какой толк работать именно в консоле?