Поведение метода equals() при сравнении ArrayList и LinkedList

Вывод будет true. Контракт List.equals сравнивает размер и соответствующие элементы в одинаковом порядке, независимо от того, ArrayList это или LinkedList.

Короткий ответ

Что ответить на собеседовании

Вывод будет true. Контракт List.equals сравнивает размер и соответствующие элементы в одинаковом порядке, независимо от того, ArrayList это или LinkedList.

Подробный разбор

Ответ с пояснениями

Условие

В задаче рассматриваются два списка – один реализован как ArrayList, другой – как LinkedList. В каждый из них добавляются два одинаковых строковых элемента "Jonh". Требуется понять, какой результат будет выведен при сравнении этих списков с помощью метода equals().

List<String> arr = new ArrayList<>();
List<String> lin = new LinkedList<>();
arr.add("Jonh");
arr.add("Jonh");
lin.add("Jonh");
lin.add("Jonh");
System.out.println(arr.equals(lin));

Обратите внимание, что метод equals у коллекций сравнивает не типы списков, а их содержимое и порядок элементов.

Ответ

Вывод будет true. Контракт List.equals сравнивает размер и соответствующие элементы в одинаковом порядке, независимо от того, ArrayList это или LinkedList.

Оба списка содержат две строки Jonh в одинаковой последовательности, поэтому равны. Дубликаты учитываются, а сравнение элементов выполняется через их equals с поддержкой null. Это правило именно списков: нельзя переносить его на любые Collection или считать список равным множеству с похожим содержимым.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее