Для копии содержимого достаточно 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.