Различия в производительности между ArrayList и LinkedList

Да, это старая тема, но у меня все еще есть некоторые недоразумения.

В Java люди говорят:

  1. ArrayList работает быстрее, чем LinkedList, если я обращаюсь к его элементам случайным образом. Я думаю, что произвольный доступ означает «дайте мне n-й элемент». Почему ArrayList быстрее?

  2. Удаление LinkedList выполняется быстрее, чем ArrayList. Я понимаю это. ArrayList медленнее, так как внутренний резервный массив необходимо перераспределить. Объяснение кода:

    List list = new ArrayList();
    список.добавить("а");
    список.добавить("б");
    список.добавить("с");
    список.удалить("б");
    System.out.println(list.get(1)); // вывод "с"
    
  3. LinkedList быстрее, чем ArrayList для вставки. Что здесь означает вставка? Если это означает переместить некоторые элементы назад, а затем поместить элемент в среднее пустое место, ArrayList должен быть медленнее, чем LinkedList. Если вставка означает только операцию добавления (объекта), как это может быть медленным?

58
задан Bahman_Aries 18 August 2015 в 09:31
поделиться