简体   繁体   English

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

[英]Check 2 sets and get all removed/added form/to first set elements

I have 2 Sets and I need equals this sets and get removed and added elements. 我有2套,我需要等于这套,然后删除和添加元素。 I do it 我做

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");
    }

In deleted set I have all element each was removed from setDestOrigin In added set I have all element each was added to setDestOrigin deleted集合中,我将所有元素均从setDestOrigin中删除在added集合中,我将所有元素均添加至setDestOrigin

Is there a way to do the same thing easier? 有没有办法使同一件事更容易?

Your approach looks like correct one. 您的方法看起来很正确。 You also could try Guava's Sets.difference(set1, set2). 您也可以尝试番石榴的Sets.difference(set1,set2)。 It returns an unmodifiable view which implements Set interface. 它返回一个实现Set接口的不可修改的视图。

If you have Guava, you can use Sets.difference() , which returns a view of the difference between two sets. 如果您有番石榴,则可以使用Sets.difference() ,它返回两个集合之间差异的视图 This can be more efficient than copying and removing elements. 这比复制和删除元素更有效。 They also have convenient utilities for initializing collections: 它们还具有用于初始化集合的便捷实用程序:

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);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM