В чем разница между Collection и List в Java?

«В чем разница между Collection и List в Java?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Collection — это общий интерфейс верхнего уровня для всех коллекций. Он гарантирует только возможность хранить набор элементов, но не гарантирует их порядок или уникальность.

List — это подтип интерфейса Collection, который:

  1. Гарантирует порядок вставки элементов.
  2. Допускает дубликаты.
  3. Предоставляет доступ по индексу (методы get(int index), set(int index, E element)).

Почему это важно: Если вашему алгоритму важен порядок или нужен доступ по позиции — используйте List (например, ArrayList, LinkedList). Если нужен просто набор уникальных элементов — Set. Collection используется как общий тип, когда специфичные свойства не важны.

Пример:

Collection<String> collection = new HashSet<>(); // Порядок не гарантирован
collection.add("A");
collection.add("B");
// collection.get(0); // ОШИБКА! У Collection нет метода get(index)

List<String> list = new ArrayList<>(); // Порядок гарантирован
list.add("A");
list.add("B");
String first = list.get(0); // Работает, возвращает "A"