我想知道是否有一种快速/干净的方法来获得两组之间的对称差异?
我有:
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);
Javadocs 用于 difference()和 symmetricDifference()
symmetricDifference()
完全符合 what you are asking for ,但 difference()
通常也很有帮助。
这两种方法都返回实时 View ,但您可以例如在结果集上调用 .immutableCopy()
以获得不变集。如果您不想要 View ,但需要一个可以修改的集合实例,请调用 .copyInto(s3)
。见 SetView对于这些方法。
关于java - 在java中获得两组之间对称差异的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8064570/