Решил у себя потестить, и результаты оказались неожиданными: ArrayList проигрывает LinkedList-у только при добавлении / удалении элементов из начала списка. (а так же потенциально проигрывает при добавлении / удалении с конца списка, если список на миллиарды элементов) Тестил так: создал ArrayList и LinkedList каждый на миллион элементов и выполнял каждую операцию 100000 раз. Вот результаты: Добавление в начало: ArrayList: 25990 мс LinkedList: 7 мс Удаление из начала: ArrayList: 22425 мс LinkedList: 5 мс Добавление в середину: ArrayList: 10676 мс LinkedList: 306245 мс Удаление из середины: ArrayList: 9264 мс LinkedList: 289440 мс Добавление в конец: ArrayList: 5 мс LinkedList: 5 мс Удаление c конца: ArrayList: 30 мс LinkedList: 14 мс Взятие по индексу из середины: ArrayList: 6 мс LinkedList: 305928 мс Присваивание по индексу из середины: ArrayList: 7 мс LinkedList: 305045 мс Взятие по индексу в начале: ArrayList: 5 мс LinkedList: 11 мс Взятие по индексу в конце: ArrayList: 5 мс LinkedList: 3 мс Вывод: используйте LinkedList только если нам нужно много раз делать операции с элементами в начале или в конце списка. В остальных случаях - ArrayList P.S. Когда писал комментарий, то забыл, что у LinkedList можно получить итератор и начинать вставлять элементы с нужного места. В таком случае действительно - все операции по вставке и удалении из середины выполняются буквально за пару миллисекунд. Это пригодится, если нам надо все время вставлять элементы в одно и то же место