Получение разницы между двумя наборами

Поэтому, если у меня есть два набора:

Set test1 = new HashSet(); test1.add(1); test1.add(2); test1.add(3); Set test2 = new HashSet(); test2.add(1); test2.add(2); test2.add(3); test2.add(4); test2.add(5); 

Есть ли способ сравнить их, и есть только набор из 4 и 5?

Попробуй это

 test2.removeAll(test1); 

Набор # RemoveAll

Удаляет из этого набора все его элементы, которые содержатся в указанной коллекции (дополнительная операция). Если указанная коллекция также является множеством, эта операция эффективно модифицирует этот набор, так что его значение представляет собой асимметричную разность наборов двух наборов.

Если вы используете библиотеку Guava (бывшая библиотека Google), есть решение:

 SetView difference = com.google.common.collect.Sets.difference(test2, test1); 

SetView – это Set , это живое представление, которое вы можете либо сделать неизменным, либо скопировать в другой набор. test1 и test2 остаются нетронутыми.

Да:

 test2.removeAll(test1) 

Хотя это будет мутировать test2 , создайте копию, если вам нужно ее сохранить.

Кроме того, вы, вероятно, имели в виду вместо .

Если вы используете Java 8, вы можете попробовать что-то вроде этого:

 public Set difference(final Set set1, final Set set2){ final Set larger = set1.size() > set2.size() ? set1 : set2; final Set smaller = larger.equals(set1) ? set2 : set1; return larger.stream().filter(n -> !smaller.contains(n)).collect(Collectors.toSet()); } 
  • Как рассчитать пересечение двух множеств?
  • Для двух массивов a и b. Найдите все пары элементов (a1, b1), такие, что a1 принадлежит массиву A и b1 принадлежит массиву B, сумма которого a1 + b1 = k
  • Декартово произведение streamов в Java 8 как stream (только с использованием streamов)
  • Почему нет ConcurrentHashSet против ConcurrentHashMap
  • std :: set с определенным пользователем типом, как обеспечить отсутствие дубликатов
  • С Mercurial, как я могу «сжать» серию наборов изменений в один перед нажатием?
  • Существует ли у JavaScript реализация установленной структуры данных?
  • Должно ли все действительно быть связкой в ​​Symfony 2.x?
  • В чем разница между Set и List?
  • Typcript: изменить тип функции, чтобы он возвращал новое значение
  • Почему у java.util.Set нет (int index)?
  • Давайте будем гением компьютера.