簡體   English   中英

檢查2組並獲取所有已刪除/添加的表單/到第一組元素

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

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

有沒有辦法使同一件事更容易?

您的方法看起來很正確。 您也可以嘗試番石榴的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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM