Вот интересная задача на слияние двух ArrayList
:
Задача: Слияние и сортировка списков чисел
Напишите программу, которая объединяет два списка целых чисел (ArrayList<Integer>
), удаляет из объединенного списка дубликаты и сортирует его в порядке возрастания.
Требования:
- Считайте, что два исходных списка могут содержать дубликаты внутри себя и между собой.
- Итоговый список не должен содержать повторяющихся элементов.
- Итоговый список должен быть отсортирован по возрастанию.
Пример:
Вход:
list1 = [3, 5, 1, 9, 3]
list2 = [8, 2, 5, 3]
Выход:
mergedList = [1, 2, 3, 5, 8, 9]
Подсказка:
- Используйте метод
addAll()
для объединения списков. - Преобразуйте объединенный список в
Set
, чтобы автоматически удалить дубликаты. - Затем преобразуйте
Set
обратно вArrayList
и отсортируйте его с помощьюCollections.sort()
илиArrayList.sort()
.
Решение:
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class MergeLists {
public static void main(String[] args) {
ArrayList<Integer> list1 = new ArrayList<>(List.of(3, 5, 1, 9, 3));
ArrayList<Integer> list2 = new ArrayList<>(List.of(8, 2, 5, 3));
// Объединяем списки
ArrayList<Integer> mergedList = new ArrayList<>(list1);
mergedList.addAll(list2);
// Удаляем дубликаты, преобразуя в Set
Set<Integer> uniqueSet = new HashSet<>(mergedList);
// Преобразуем обратно в ArrayList и сортируем
mergedList = new ArrayList<>(uniqueSet);
Collections.sort(mergedList);
// Выводим результат
System.out.println("Объединенный и отсортированный список без дубликатов: " + mergedList);
}
}
Ожидаемый вывод:
Объединенный и отсортированный список без дубликатов: [1, 2, 3, 5, 8, 9]
Эта задача полезна для практики слияния списков, удаления дубликатов и сортировки.