74. Объединить массивы без дубликатов #
🔥 Объедини два списка целых чисел, исключив повторы.
public List<Integer> collect(List<Integer> lst1, List<Integer> lst2) {
// код тут
}
Спойлеры к решению
Подсказки
💡 Чтобы убрать дубликаты, используй
💡 Для сохранения порядка можно применить
💡 В Java 8+ удобно стримами:
💡 Если важна сортировка, лучше использовать
Set
(например, HashSet
).💡 Для сохранения порядка можно применить
LinkedHashSet
.💡 В Java 8+ удобно стримами:
Stream.concat(...)
и distinct()
.💡 Если важна сортировка, лучше использовать
TreeSet
.Решение
Вариант с Set
:
public List<Integer> collect(List<Integer> lst1, List<Integer> lst2) {
Set<Integer> set = new LinkedHashSet<>();
set.addAll(lst1);
set.addAll(lst2);
return new ArrayList<>(set);
}
Вариант на Stream API:
public List<Integer> collect(List<Integer> lst1, List<Integer> lst2) {
return Stream.concat(lst1.stream(), lst2.stream())
.distinct()
.collect(Collectors.toList());
}
LinkedHashSet
сохраняет порядок первого появления.distinct()
работает лениво и автоматически убирает дубли.Важно: оба решения не зависят от размера входных коллекций.