检查 2 个集合并获取所有已删除/添加的表单/到第一个集合元素



我有 2 个集合,我需要等于这个集合并删除和添加元素。我做到了

public static void main(String[] args) {
System.out.println("start");
Set<String> setDestOrigin = new HashSet<>();
Set<String> setLocalOrigin = new HashSet<>();
setDestOrigin.add("test1");
setDestOrigin.add("test2");
setDestOrigin.add("test3");
setDestOrigin.add("test7");
setDestOrigin.add("test5");
setLocalOrigin.add("test1");
setLocalOrigin.add("test2");
setLocalOrigin.add("test3");
setLocalOrigin.add("test4");
setLocalOrigin.add("test5");

Set<String> deleted = new HashSet<>(setLocalOrigin);
deleted.removeAll(setDestOrigin);
Set<String> added = new HashSet<>(setDestOrigin);
added.removeAll(setLocalOrigin);
System.out.println("finish");
}

deleted集合中,我有所有元素,每个元素都已从setDestOrigin中删除 在added集合中,我有所有元素,每个元素都被添加到setDestOrigin

有没有办法更容易地做同样的事情?

你的方法看起来是正确的。 你也可以试试Guava's Sets.difference(set1, set2)。 它返回一个实现 Set 接口的不可修改的视图。

如果您有番石榴,则可以使用Sets.difference(),它返回两组之间差异的视图。这可能比复制和删除元素更有效。它们还具有用于初始化集合的便捷实用程序:

Set<String> setDestOrigin = ImmutableSet.of("test1", "test2", "test3", "test7", "test5");
Set<String> setLocalOrigin = ImmutableSet.of("test1", "test2", "test3", "test4", "test5");
Set<String> deleted = Sets.difference(setLocalOrigin, setDestOrigin);
Set<String> added = Sets.difference(setDestOrigin, setLocalOrigin);

最新更新