如何:在Java中查找两个集合之间的集合差异

如何:在Java中查找两个集合之间的集合差异,java,Java,我对Java相对来说比较陌生,我想知道是否有像C#中的LINQs“”这样的方法来获取两个集合的不同项 我查看了apachecommon的CollectionUtils、guava的Collections和Collections2,但没有发现这样的方法 顺便说一句:我使用的是Java 7而不是Java 8。假设您有: ... Set<int> s1 = new HashSet<Integer>(); Set<int> s2 = new HashSet<In

我对Java相对来说比较陌生,我想知道是否有像C#中的LINQs“”这样的方法来获取两个集合的不同项

我查看了apachecommon的
CollectionUtils
、guava的
Collections
Collections2
,但没有发现这样的方法

顺便说一句:我使用的是Java 7而不是Java 8。

假设您有:

...
Set<int> s1 = new HashSet<Integer>();
Set<int> s2 = new HashSet<Integer>();
...
有关详细信息,请参阅文档

注意:这将修改集合,但您可以拥有它的副本。

您可以尝试此操作

collection2.removeAll(collection1);
虽然这会变异收集2,但如果需要保存,请创建一个副本。

我用过番石榴


参数是集合,而不是一般集合,但是从任何集合(具有唯一项)创建集合的简便方法是Guava(Iterable)。

您是在Java还是C#?Java有一个集合接口,它可能具有您想要的功能。如果你只是在收集区下面找,你可能找不到它。如果你坚持使用收藏品,你应该看看番石榴libraries@LuiggiMendoza很明显,他是在Java中工作的。我想我发现我在Sets util类中寻找的是正确的,我一开始并没有看到它。这种方法被称为“set.difference”。@Rajacsp您指出的复制品是旧的,质量较低。例如,它没有说明问题涉及哪种语言。
collection2.removeAll(collection1);