多个集合的交集(作为集合)
Intersection of multiple sets (as collections)
如何在 Java 中找到多个(两个以上)集合的交集?
retainAll
本身是行不通的,因为我需要能够获得不止两个集合之间的交集
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;
}
您可以使用 Set 的 retainAll(other)
方法,该方法仅保留两个集合中的项目。它改变了原始集合,因此您可能需要先获取集合的副本(使用适当的构造函数)。
如何在 Java 中找到多个(两个以上)集合的交集?
retainAll
本身是行不通的,因为我需要能够获得不止两个集合之间的交集
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;
}
您可以使用 Set 的 retainAll(other)
方法,该方法仅保留两个集合中的项目。它改变了原始集合,因此您可能需要先获取集合的副本(使用适当的构造函数)。