Контейнер List гарантирует хранение списка элементов в определенной последовательности. Интерфейс List добавляет в Collection методы вставки и удаления элементов в середине списка.
Существуют две основные разновидности List:
ArrayList с превосходной скоростью произвольного доступа к элементам, но относительно медленными операциями вставки и удаления элементов в середине.LinkedList с оптимальным последовательным доступом и низкозатратными операциями вставки и удаления в середине списка. Операции произвольного доступа LinkedList выполняет относительно медленно, но обладает более широкой функциональностью, чем ArrayList.Пример работы с ArrayList
ArrayList al = new ArrayList();
al.add("C");
al.add("A");
al.add("E");
al.add("F");
al.add(1, "A2");
System.out.println("Содержимое al: " + al);
al.remove("F");
al.remove(2);
Класс LinkedList, как и ArrayList, реализует базовый интерфейс List, но при этом выполняет некоторые операции (вставка и удаление в середине списка) более эффективно, чем ArrayList. И наоборот, с операциями произвольного доступа он работает менее эффективно.
В LinkedList также добавляются методы, которые позволяют использовать его как стек, очередь или двустороннюю очередь (дек).
Некоторые из этих методов представляют собой синонимы или небольшие видоизменения для создания имен, более знакомых в контексте конкретного применения (прежде всего Queue). Например, методы getFirst() и element() идентичны - они возвращают начало (первый элемент) списка без его удаления и выдают исключение NoSuchElementException, если список пуст.
Метод addFirst() вставляет элемент в начало списка.
Метод offer() делает то же, что add() и addLast(). Все эти методы добавляют элемент в конец списка.
Метод removeLast() удаляет и возвращает последний элемент списка.
Пример работы с LinkedList
LinkedList ll = new LinkedList();
ll.add("F");
ll.add("B");
ll.add("D");
ll.add("E");
ll.add("C");
ll.addLast("Z");
ll.addFirst("A");
ll.add(1, "A2");
System.out.println("Содержимое ll: " + ll);
// удаление элементов
ll.remove("F");
ll.remove(2);
System.out.println("Содержимое ll: " + ll);
// удалить первый и второй элемент
ll.removeFirst();
ll.removeLast();
System.out.println("Содержимое ll: " + ll);