如何在Java中找到多个(两个以上)集合的交集?
retainAll
本身不会起作用,因为我需要能够获得不止两组之间的交集
答案 0 :(得分:1)
public static <T> Collection<T> getIntersection(Collection<T>... sets) {
Collection<T> firstSet;
if (sets == null || sets.length == 0 || (firstSet = sets[0]) == null)
return Collections.<T>emptySet();
Collection<T> intersection = new HashSet(firstSet);
for (Collection c : sets) {
if (c == null)
return Collections.<T>emptySet();
intersection.retainAll(c);
}
return intersection;
}
答案 1 :(得分:1)
您可以使用Set retainAll(other)
方法,该方法仅保留两个集合中的项目。它会改变原始集合,因此您可能需要先获取集合的副本(使用适当的构造函数)。