Найти тему
DEBAGanov

Java 903. Реализуйте симметрическую разность двух коллекций используя методы Collection (addAll(...), removeAll(...), retainAll(...)).

Для реализации симметрической разности двух коллекций можно использовать методы addAll(), removeAll() и retainAll() из интерфейса Collection. Вот пример Java кода, демонстрирующий это:

import java.util.ArrayList;
import java.util.Collection;

public class SymmetricDifferenceExample {
public static <T> Collection<T> symmetricDifference(Collection<? extends T> collection1,
Collection<? extends T> collection2) {
Collection<T> difference = new ArrayList<>(collection1);

// Добавляем элементы из второй коллекции, которых нет в первой коллекции difference.addAll(collection2);

// Удаляем элементы, которые есть и в первой, и во второй коллекциях difference.removeAll(collection1);
difference.removeAll(collection2);

return difference;
}

public static void main(String[] args) {
Collection<Integer> collection1 = new ArrayList<>();
collection1.add(1);
collection1.add(2);
collection1.add(3);

Collection<Integer> collection2 = new ArrayList<>();
collection2.add(3);
collection2.add(4);
collection2.add(5);

Collection<Integer> symmetricDifference = symmetricDifference(collection1, collection2);

System.out.println("Симметрическая разность: " + symmetricDifference);
}
}

В этом примере у нас есть метод symmetricDifference(), который принимает две коллекции в качестве параметров и возвращает их симметрическую разность. Мы создаем новую коллекцию difference, копируя элементы из первой коллекции. Затем мы добавляем все элементы из второй коллекции, которых нет в первой коллекции, используя метод addAll(). Далее мы удаляем все элементы, которые есть как в первой, так и во второй коллекциях, с помощью метода removeAll(). В результате получаем коллекцию, содержащую только элементы, присутствующие только в одной из исходных коллекций.

В данном примере мы используем коллекции ArrayList для наглядности, но этот код будет работать с любыми реализациями интерфейса Collection.

1606 вопрос-ответ по Java: https://github.com/DEBAGanov/interview_questions

Tелеграмм канал: https://t.me/DEBAGanov

Мое резюме: https://github.com/DEBAGanov