Когда я должен использовать LinkedList
? При работе в основном со стеками или при работе с буферами.
Когда я должен использовать ArrayList
? Только при работе с индексами, в противном случае вы можете использовать HashTable со связанным списком, тогда вы получите:
Хеш-таблица + связанный список
- Доступ по ключу O (1),
- Вставить по ключу O (1),
- Удалить по ключу O (1)
- и есть хитрость для реализации RemoveAll / SetAll с O (1) при использовании управления версиями
Кажется, это хорошее решение, и в большинстве случаев так оно и должно быть:
HashTable занимает много дискового пространства, поэтому, когда вам нужно управлять 1 000 000 списков элементов, это может стать чем-то важным. Это может происходить в серверных реализациях, в клиентах это происходит редко.
Также взгляните на Красно-Черное дерево
- Произвольный доступ Журнал (n),
- Вставка Журнал (n),
- Удалить Журнал (n)