两组交叉

时间:2015-07-14 09:05:33

标签: java set

获得两套交集的简单方法? 我有:

    Set<Long> set1 = {1,2,3}
    Set<Long> set2 = {2,3,4}

我看起来像是这样的方法:

    Set<Long> intersection = new HashSet<>();
    intersection.intersect(set1, set2);

并且intersection.toString()生成我包含{2,3}

4 个答案:

答案 0 :(得分:2)

您可以使用retainAll()

请注意,这将修改其中一个集合,因此您可能需要先创建副本。

答案 1 :(得分:1)

或保留值:

Set<String> intersection = new HashSet<String>(set1);
intersection.retainAll(set2);

答案 2 :(得分:1)

使用retainAll()

Set方法
Set<String> s1;
Set<String> s2;
s1.retainAll(s2); // s1 now contains only elements in both sets

但是,retainAll会修改s1的内容。您应该创建s1的副本并在副本

上使用retainAll

通过以下方式避免这种情况,

Set<String> mySet = new HashSet<String>(s1); // use the copy constructor
mySet.retainAll(s2);

答案 3 :(得分:0)

retainAll()方法用于从列表中删除未包含在指定集合中的元素。

Set<Long> set1 = {1,2,3}
Set<Long> set2 = {2,3,4}    
set1.retainAll(set2);//finally prints 2,3