Я считаю, что основным узким местом производительности в LinkedList
является тот факт, что всякий раз, когда вы продвигаетесь к любому концу deque, за кулисами реализация выделяет новый узел связанного списка, который по существу включает JVM / OS, и это дорого,Кроме того, всякий раз, когда вы получаете доступ с любого конца, внутренние узлы LinkedList
становятся пригодными для сбора мусора, и это больше работы за кулисами.Кроме того, поскольку узлы связанного списка расположены здесь и там, использование кэша ЦП не принесет особой пользы.
Если это может быть интересно, у меня есть доказательство того, что добавление элемента в ArrayList
илиArrayDeque
работает в амортизированном постоянном времени;см. это .