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

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

Set<Integer> test1 = new HashSet<Integer>();
test1.add(1);
test1.add(2);
test1.add(3);

Set<Integer> test2 = new HashSet<Integer>();
test2.add(1);
test2.add(2);
test2.add(3);
test2.add(4);
test2.add(5);

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

138
задан sergeyan 6 September 2019 в 17:52
поделиться

1 ответ

Только для помещения одного примера здесь (система находится в existingState, и мы хотим найти, что элементы удаляют (элементы, которые не находятся в newState, но присутствуют в existingState), и элементы для добавления (элементы, которые находятся в newState, но не присутствуют в existingState):

public class AddAndRemove {

  static Set<Integer> existingState = Set.of(1,2,3,4,5);
  static Set<Integer> newState = Set.of(0,5,2,11,3,99);

  public static void main(String[] args) {

    Set<Integer> add = new HashSet<>(newState);
    add.removeAll(existingState);

    System.out.println("Elements to add : " + add);

    Set<Integer> remove = new HashSet<>(existingState);
    remove.removeAll(newState);

    System.out.println("Elements to remove : " + remove);

  }
}

произвел бы это в результате:

Elements to add : [0, 99, 11]
Elements to remove : [1, 4]
0
ответ дан 23 November 2019 в 23:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: