У меня есть два набора A и B.
A
--
1
2
6
B
--
1
2
3
4
Когда я сравниваю набор A с B, мне нужно получить значение 6 в качестве выхода и значение 4 в качестве выхода, когда набор B сравнивается с A.
Мне интересно, каков наилучший алгоритм для этого? Я написал один, но он имеет квадратичную сложность. Это в основном итерация одного набора, а внутри цикла итерация второго набора для проверки существования значения. Мне это показалось неэффективным.
Context
У меня есть набор значений в базе данных, который я показываю в пользовательском интерфейсе. Пользователи могут удалить или добавить новые элементы в список и нажать кнопку «Сохранить изменения», чтобы сохранить все изменения в базе данных. Поэтому здесь мне нужно вставить вновь добавленные элементы в базу данных и удалить удаленные элементы.
Итак, я передаю первый набор, в котором будут элементы, которые были добавлены и уже существуют. Я загружаю другой набор, который будет иметь все элементы из базы данных. Теперь, если я применю приведенный выше алгоритм для сравнения Set A (новый список) с Set B (список базы данных) и возьму элементы, которые существуют в SetA, а не в SetB, я получу все вновь добавленные элементы. Затем SetB будет сравниваться с SetA, и все элементы, которые существуют в setB и не существуют в SetA, будут удалены. Я открыт для предложений по лучшему алгоритму.
Любая помощь будет отличной.