![](/img/trans.png)
[英]Set that fires event when first element is added, or last one is removed
[英]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.