Создание копии коллекции строк

Для копии содержимого достаточно new ArrayList<>(elems), независимо от конкретного класса источника. Новый контейнер сохранит все элементы и порядок их обхода.

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

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

Для копии содержимого достаточно new ArrayList<>(elems), независимо от конкретного класса источника. Новый контейнер сохранит все элементы и порядок их обхода.

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

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

Условие

Необходимо перенести все элементы из исходной коллекции Collection<String> в новую коллекцию copied, при этом тип конкретной реализации (ArrayList, HashSet и др.) нам неизвестен.

import java.util.Collection;

public class JetbulbInterview {
    public static void main(String[] args) {
        Collection<String> elems = new ArrayList<>();
        elems.add("Hello");
        elems.add("World");
        elems.add("!");

        Collection<String> copied = 
    }
}

Ответ

Для копии содержимого достаточно new ArrayList<>(elems), независимо от конкретного класса источника. Новый контейнер сохранит все элементы и порядок их обхода.

Collection<String> copied = new java.util.ArrayList<>(elems);

Изменение состава copied не влияет на elems и наоборот. Копия поверхностная: ссылки на элементы общие, но String неизменяем, поэтому отдельное клонирование строк не требуется. Класс, компаратор и другие специальные свойства исходной коллекции автоматически не сохраняются. HashSet в качестве копии мог бы удалить дубликаты, поэтому ArrayList безопаснее для требования перенести все элементы. В исходном коде также нужен импорт ArrayList.

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

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

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

Подробнее