我想知道是否有一种快速/干净的方法来获得两组之间的对称差异?
我有:
Set<String> s1 = new HashSet<String>(); s1.add("a"); s1.add("b"); s1.add("c"); Set<String> s2 = new HashSet<String>(); s2.add("b");
我需要类似的东西:
Set<String> diff = Something.diff(s1, s2); // diff would contain ["a", "c"]
为了澄清我需要 对称的 区别。
您可以使用Google Guava库中的一些功能(这确实很棒,我强烈推荐!):
Sets.difference(s1, s2); Sets.symmetricDifference(s1, s2);
差异()和symmetricDifference()的 Javadocs
symmetricDifference()确实满足您的要求,但difference()通常也有帮助。
symmetricDifference()
difference()
两种方法都返回实时视图,但是例如您可以调用.immutableCopy()结果集以获得不变的集。如果您不想要视图,但需要一个可修改的实例,请致电.copyInto(s3)。有关这些方法,请参见SetView。
.immutableCopy()
.copyInto(s3)