Вывод будет true. Контракт List.equals сравнивает размер и соответствующие элементы в одинаковом порядке, независимо от того, ArrayList это или LinkedList.
Поведение метода 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 или считать список равным множеству с похожим содержимым.