|
|
|
ArrayList Vs. LinkedList
|
|||
|---|---|---|---|
|
#18+
Всем привет! Объясните плиз тупице когда лучше использовать 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. ИМХО, бред какой то. или я херово превел. Помогите плиз понять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2008, 20:34 |
|
||
|
ArrayList Vs. LinkedList
|
|||
|---|---|---|---|
|
#18+
Все правильно. Оба класса реализуют интерфейс TList, только LinkedList и ArrayList основаны на разных структурах данных. Этим и объясняется особенность каждого из них. Если много операций добавления и удаления, то используй LinkedList, где для того, чтобы вставить элемент между двумя другими не требуется перемещать куски массива (списка). Но минусом является скорость индексного доступа к данным. В ArrayList структура данных жестче, но скорость доступа к данным выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2008, 22:00 |
|
||
|
ArrayList Vs. LinkedList
|
|||
|---|---|---|---|
|
#18+
В первую очередь они отличаются набором интерфейсов. LinkedList реализует Queue и Deque, ArrayList нет. Во вторую способом хранения. Массив или двунаправленный список. Разница: 1. Последовательный доступ: Сколько не тестировал, большой разницы нет; 2. Произвольный доступ: ArrayList предпочтительнее; 3. Последовательная запись: добавление в LinkedList требует фиксированного времени (все относительно), а вот в случае ArrayList, если размер списка превышает размер массива, то выделяется новый массив в 2 раза больше и все данные (на самом деле указатели, так что не особо страшно) переписываются в новый массив. Чисто теоретически, это может создать задержку на больших (несколько миллионов) размерах списка. Если заранее известен размер списка, то лучше его указать при создании, если не известен, то лучше использовать LinkedList. В последнем утверждении я сам, если честно, сомневаюсь. 4. Произвольная запись: ArrayList предпочтительнее; 5. Сортировка: сортировка происходит так: список копируется в массив и там происходит сортировка, потом результат копируется обратно в список. Скопировать из массива в массив быстрее, т.е. на сортировку ArrayList тратится времени меньше. На мой вгляд лучшее руководство по коллекциям Java Неплохое руководство на русском языке :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2008, 08:07 |
|
||
|
ArrayList Vs. LinkedList
|
|||
|---|---|---|---|
|
#18+
Самоловских Виталий aka KefirВ первую очередь они отличаются набором интерфейсов. LinkedList реализует Queue и Deque, ArrayList нет. Но только не в Java 1.4 А так хороший вопрос, я его на собеседованиях стараюсь задавать. Не все понимают разницу, к сожалению. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2008, 20:47 |
|
||
|
ArrayList Vs. LinkedList
|
|||
|---|---|---|---|
|
#18+
АррэйЛист обёртка для массива. Предполагаю что пока размер буфера не меньше количество элементов все операции будут быстрее с АррэйЛистом. сам чёт предпочитаю Линкед. Ну так просто вот предпочита. Название больше нравится. Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2008, 21:41 |
|
||
|
ArrayList Vs. LinkedList
|
|||
|---|---|---|---|
|
#18+
SarinАррэйЛист обёртка для массива. Предполагаю что пока размер буфера не меньше количество элементов все операции будут быстрее с АррэйЛистом. ArrayList инициализируется массивом из 10 элементов. Поэтому если сразу ему не указать более или менее вменяемый размер, под него будет выделено памяти почти в 2 раза больше, чем требуется. Конечно, потом половина соберется, но осадок останется :) А так да, быстрее... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2008, 07:34 |
|
||
|
ArrayList Vs. LinkedList
|
|||
|---|---|---|---|
|
#18+
mikkri А так хороший вопрос, я его на собеседованиях стараюсь задавать. Не все понимают разницу, к сожалению. просто arraylist дурацкое название, вводит в заблуждение, без пол-литра и не поймёшь, что это аналог массива берите пример с С++, там контейнеры названы правильно массив - vector<> список - list<> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2008, 11:21 |
|
||
|
ArrayList Vs. LinkedList
|
|||
|---|---|---|---|
|
#18+
skelet mikkri А так хороший вопрос, я его на собеседованиях стараюсь задавать. Не все понимают разницу, к сожалению. просто arraylist дурацкое название, вводит в заблуждение, без пол-литра и не поймёшь, что это аналог массива берите пример с С++, там контейнеры названы правильно массив - vector<> список - list<> ИМХО, не согласен. В Java принято вещи называть своими именами. Так List - это контракт списка, который можно реализовать разными способами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2008, 13:37 |
|
||
|
ArrayList Vs. LinkedList
|
|||
|---|---|---|---|
|
#18+
2ak, Я тут снял не большой ролик про ArrayList и LinkedList. Может кому будет полезно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2014, 18:44 |
|
||
|
ArrayList Vs. LinkedList
|
|||
|---|---|---|---|
|
#18+
sasha-ne, "горантия времени" это что? А вот уважаемые товарищи Куксенко и Шипилёв заявляют, что нет никаких практических задач, в которых LinkedList имел бы хоть какое-то преимущество. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 09:04 |
|
||
|
ArrayList Vs. LinkedList
|
|||
|---|---|---|---|
|
#18+
BlazkowiczА вот уважаемые товарищи Куксенко и Шипилёв заявляют, что нет никаких практических задач, в которых LinkedList имел бы хоть какое-то преимущество. Они сказали, что на порядке 10k элементов может быть оправдано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 09:15 |
|
||
|
ArrayList Vs. LinkedList
|
|||
|---|---|---|---|
|
#18+
ArrayList загрузится целиком в кеш - если он небольшой и практически не возникнет кешмисов При любых операция У линкеда данные разбросаны по памяти и в кеш будут загружены не сразу Кешмисы у линкеда приведут к просадке перфманса ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 10:22 |
|
||
|
ArrayList Vs. LinkedList
|
|||
|---|---|---|---|
|
#18+
buldozer01ArrayList загрузится целиком в кеш - если он небольшой и практически не возникнет кешмисов Зато может быть фалсшаринг :) На чём LL и может выиграть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 10:31 |
|
||
|
ArrayList Vs. LinkedList
|
|||
|---|---|---|---|
|
#18+
Alexey TominНа чём LL и может выиграть. Есть бенчмарки ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 11:22 |
|
||
|
ArrayList Vs. LinkedList
|
|||
|---|---|---|---|
|
#18+
Alexey TominЗато может быть фалсшаринг :) На чём LL и может выиграть. По-моему, там где false sharing критичен, LL вообще делать нечего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 11:24 |
|
||
|
ArrayList Vs. LinkedList
|
|||
|---|---|---|---|
|
#18+
Alexey Tominbuldozer01ArrayList загрузится целиком в кеш - если он небольшой и практически не возникнет кешмисов Зато может быть фалсшаринг :) На чём LL и может выиграть. Слушайте Алексей - мне кажется или фалсшаринг при многопоточном доступе возникает Вы ArrayList с разных потоков без синхронизации юзаете ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 11:26 |
|
||
|
ArrayList Vs. LinkedList
|
|||
|---|---|---|---|
|
#18+
buldozer01Alexey Tominпропущено... Зато может быть фалсшаринг :) На чём LL и может выиграть. Слушайте Алексей - мне кажется или фалсшаринг при многопоточном доступе возникает Вы ArrayList с разных потоков без синхронизации юзаете ? Как вариант- каждый поток пишет флаг в свою ячейку, а отдельный поток читает. Вообще чисто теоретический совет, не более. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 11:39 |
|
||
|
ArrayList Vs. LinkedList
|
|||
|---|---|---|---|
|
#18+
buldozer01Вы ArrayList с разных потоков без синхронизации юзаете ? Ну, если на чтение, то почему нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 11:39 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38731244&tid=2126680]: |
0ms |
get settings: |
7ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
231ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 243ms |
| total: | 539ms |

| 0 / 0 |
