Когда использовать LinkedList поверх ArrayList в Java? - PullRequest
2841 голосов
/ 27 ноября 2008

Я всегда был одним, чтобы просто использовать:

List<String> names = new ArrayList<>();

Я использую интерфейс в качестве имени типа для переносимость , поэтому, когда я задаю такие вопросы, я могу переделать свой код.

Когда следует использовать LinkedList вместо ArrayList и наоборот?

Ответы [ 31 ]

0 голосов
/ 11 июня 2012

Когда я должен использовать LinkedList? При работе в основном со стеками или при работе с буферами. Когда я должен использовать ArrayList? Только при работе с индексами, в противном случае вы можете использовать HashTable со связанным списком, тогда вы получите:

Хеш-таблица + связанный список

  • Доступ по ключу O (1),
  • Вставить по ключу O (1),
  • Удалить по ключу O (1)
  • и есть хитрость для реализации RemoveAll / SetAll с O (1) при использовании управления версиями

Кажется, это хорошее решение, и в большинстве случаев так оно и должно быть: HashTable занимает много дискового пространства, поэтому, когда вам нужно управлять 1 000 000 списков элементов, это может стать чем-то важным. Это может происходить в серверных реализациях, в клиентах это происходит редко.

Также взгляните на Красно-Черное дерево

  • Произвольный доступ Журнал (n),
  • Вставка Журнал (n),
  • Удалить Журнал (n)
...