检查2组,并将所有删除/添加的表格/添加到第一组元素

时间:2017-03-03 05:10:23

标签: java set

我有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

有没有办法让同样的事情变得更容易?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

如果你有番石榴,你可以使用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);