获得两套交集的简单方法? 我有:
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}
答案 0 :(得分:2)
您可以使用retainAll()
。
请注意,这将修改其中一个集合,因此您可能需要先创建副本。
答案 1 :(得分:1)
或保留值:
Set<String> intersection = new HashSet<String>(set1);
intersection.retainAll(set2);
答案 2 :(得分:1)
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