我想知道是否有一种快速/干净的方法来获得两组之间的对称差异?
我有:
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"]
只是为了澄清我需要 对称 差异。
原文由 Simeon 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以使用 Google Guava 库中的一些函数(真的很棒,强烈推荐!):
difference() 和 symmetricDifference() 的 Javadocs
symmetricDifference()
完全 符合您的要求,但是difference()
也经常有帮助。这两种方法都会返回实时视图,但您可以在结果集上调用
.immutableCopy()
以获得不变的集。如果您不想要视图,但需要可以修改的集合实例,请调用.copyInto(s3)
。有关这些方法,请参阅 SetView 。