Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / ArrayList Vs. LinkedList / 19 сообщений из 19, страница 1 из 1
28.09.2008, 20:34
    #35564259
2ak
2ak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ArrayList Vs. LinkedList
Всем привет!

Объясните плиз тупице когда лучше использовать ArrayList и LinkedList.

Смотрю Эккеля:

"The LinkedList also implements the basic List interface like ArrayList does, but it performs certain operations (insertion and removal in the middle of the List) more efficiently than does ArrayList. Conversely, it is less efficient for random-access operations."

Из него следует что если предпологается часто добавлять и удалять элементы в середину листа, то тогда лучше юзать LinkedList, а в остальных случаях ArrayList.

ИМХО, бред какой то. или я херово превел. Помогите плиз понять.
...
Рейтинг: 0 / 0
28.09.2008, 22:00
    #35564295
Quadrix
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ArrayList Vs. LinkedList
Все правильно. Оба класса реализуют интерфейс TList, только LinkedList и ArrayList основаны на разных структурах данных. Этим и объясняется особенность каждого из них. Если много операций добавления и удаления, то используй LinkedList, где для того, чтобы вставить элемент между двумя другими не требуется перемещать куски массива (списка). Но минусом является скорость индексного доступа к данным. В ArrayList структура данных жестче, но скорость доступа к данным выше.
...
Рейтинг: 0 / 0
29.09.2008, 08:07
    #35564428
Самоловских Виталий aka Kefir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ArrayList Vs. LinkedList
В первую очередь они отличаются набором интерфейсов. LinkedList реализует Queue и Deque, ArrayList нет.

Во вторую способом хранения. Массив или двунаправленный список. Разница:
1. Последовательный доступ: Сколько не тестировал, большой разницы нет;
2. Произвольный доступ: ArrayList предпочтительнее;
3. Последовательная запись: добавление в LinkedList требует фиксированного времени (все относительно), а вот в случае ArrayList, если размер списка превышает размер массива, то выделяется новый массив в 2 раза больше и все данные (на самом деле указатели, так что не особо страшно) переписываются в новый массив. Чисто теоретически, это может создать задержку на больших (несколько миллионов) размерах списка. Если заранее известен размер списка, то лучше его указать при создании, если не известен, то лучше использовать LinkedList. В последнем утверждении я сам, если честно, сомневаюсь.
4. Произвольная запись: ArrayList предпочтительнее;
5. Сортировка: сортировка происходит так: список копируется в массив и там происходит сортировка, потом результат копируется обратно в список. Скопировать из массива в массив быстрее, т.е. на сортировку ArrayList тратится времени меньше.

На мой вгляд лучшее руководство по коллекциям Java
Неплохое руководство на русском языке :)
...
Рейтинг: 0 / 0
29.09.2008, 20:47
    #35566315
mikkri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ArrayList Vs. LinkedList
Самоловских Виталий aka KefirВ первую очередь они отличаются набором интерфейсов. LinkedList реализует Queue и Deque, ArrayList нет.
Но только не в Java 1.4

А так хороший вопрос, я его на собеседованиях стараюсь задавать. Не все понимают разницу, к сожалению.
...
Рейтинг: 0 / 0
29.09.2008, 21:41
    #35566395
Sarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ArrayList Vs. LinkedList
АррэйЛист обёртка для массива. Предполагаю что пока размер буфера не меньше количество элементов все операции будут быстрее с АррэйЛистом.

сам чёт предпочитаю Линкед. Ну так просто вот предпочита. Название больше нравится.

Код: plaintext
Meo voto
...
Рейтинг: 0 / 0
30.09.2008, 07:34
    #35566632
Самоловских Виталий aka Kefir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ArrayList Vs. LinkedList
SarinАррэйЛист обёртка для массива. Предполагаю что пока размер буфера не меньше количество элементов все операции будут быстрее с АррэйЛистом.
ArrayList инициализируется массивом из 10 элементов. Поэтому если сразу ему не указать более или менее вменяемый размер, под него будет выделено памяти почти в 2 раза больше, чем требуется. Конечно, потом половина соберется, но осадок останется :) А так да, быстрее...
...
Рейтинг: 0 / 0
30.09.2008, 11:21
    #35567078
skelet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ArrayList Vs. LinkedList
mikkri
А так хороший вопрос, я его на собеседованиях стараюсь задавать. Не все понимают разницу, к сожалению.
просто arraylist дурацкое название, вводит в заблуждение, без пол-литра и не поймёшь, что это аналог массива

берите пример с С++, там контейнеры названы правильно
массив - vector<>
список - list<>
...
Рейтинг: 0 / 0
30.09.2008, 13:37
    #35567500
mikkri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ArrayList Vs. LinkedList
skelet mikkri
А так хороший вопрос, я его на собеседованиях стараюсь задавать. Не все понимают разницу, к сожалению.
просто arraylist дурацкое название, вводит в заблуждение, без пол-литра и не поймёшь, что это аналог массива

берите пример с С++, там контейнеры названы правильно
массив - vector<>
список - list<>
ИМХО, не согласен. В Java принято вещи называть своими именами. Так List - это контракт списка, который можно реализовать разными способами.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
27.08.2014, 18:44
    #38730866
sasha-ne
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ArrayList Vs. LinkedList
2ak,

Я тут снял не большой ролик про ArrayList и LinkedList. Может кому будет полезно.
YouTube Video
...
Рейтинг: 0 / 0
28.08.2014, 09:04
    #38731157
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ArrayList Vs. LinkedList
sasha-ne,

"горантия времени" это что? А вот уважаемые товарищи Куксенко и Шипилёв заявляют, что нет никаких практических задач, в которых LinkedList имел бы хоть какое-то преимущество.
...
Рейтинг: 0 / 0
28.08.2014, 09:15
    #38731167
avp.mk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ArrayList Vs. LinkedList
BlazkowiczА вот уважаемые товарищи Куксенко и Шипилёв заявляют, что нет никаких практических задач, в которых LinkedList имел бы хоть какое-то преимущество.
Они сказали, что на порядке 10k элементов может быть оправдано.
...
Рейтинг: 0 / 0
28.08.2014, 10:22
    #38731228
buldozer01
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ArrayList Vs. LinkedList
ArrayList загрузится целиком в кеш - если он небольшой
и практически не возникнет кешмисов

При любых операция

У линкеда данные разбросаны по памяти и в кеш будут загружены не сразу
Кешмисы у линкеда приведут к просадке перфманса
...
Рейтинг: 0 / 0
28.08.2014, 10:31
    #38731244
Alexey Tomin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ArrayList Vs. LinkedList
buldozer01ArrayList загрузится целиком в кеш - если он небольшой
и практически не возникнет кешмисов

Зато может быть фалсшаринг :)
На чём LL и может выиграть.
...
Рейтинг: 0 / 0
28.08.2014, 11:22
    #38731330
buldozer01
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ArrayList Vs. LinkedList
Alexey TominНа чём LL и может выиграть.

Есть бенчмарки ?
...
Рейтинг: 0 / 0
28.08.2014, 11:24
    #38731335
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ArrayList Vs. LinkedList
Alexey TominЗато может быть фалсшаринг :)
На чём LL и может выиграть.
По-моему, там где false sharing критичен, LL вообще делать нечего.
...
Рейтинг: 0 / 0
28.08.2014, 11:26
    #38731337
buldozer01
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ArrayList Vs. LinkedList
Alexey Tominbuldozer01ArrayList загрузится целиком в кеш - если он небольшой
и практически не возникнет кешмисов

Зато может быть фалсшаринг :)
На чём LL и может выиграть.

Слушайте Алексей - мне кажется или фалсшаринг при многопоточном доступе возникает

Вы ArrayList с разных потоков без синхронизации юзаете ?
...
Рейтинг: 0 / 0
28.08.2014, 11:39
    #38731359
Alexey Tomin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ArrayList Vs. LinkedList
buldozer01Alexey Tominпропущено...
Зато может быть фалсшаринг :)
На чём LL и может выиграть.

Слушайте Алексей - мне кажется или фалсшаринг при многопоточном доступе возникает

Вы ArrayList с разных потоков без синхронизации юзаете ?

Как вариант- каждый поток пишет флаг в свою ячейку, а отдельный поток читает.
Вообще чисто теоретический совет, не более.
...
Рейтинг: 0 / 0
28.08.2014, 11:39
    #38731360
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ArrayList Vs. LinkedList
buldozer01Вы ArrayList с разных потоков без синхронизации юзаете ?
Ну, если на чтение, то почему нет?
...
Рейтинг: 0 / 0
28.08.2014, 11:44
    #38731369
buldozer01
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ArrayList Vs. LinkedList
Blazkowicz,

Да соглашусь

Но я когда говорил про кешмисы и запись тоже имел ввиду
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / ArrayList Vs. LinkedList / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]