找到5组交集的有效方法

时间:2013-04-26 18:04:11

标签: java algorithm sorting set

我有5套具有数值的套装。我有兴趣找到所有5套的交集。

现在,我正在考虑以下

Do a Collections.sort() on all 5 sets

找到最短的一组并做一个

shortestSet.retainAll(otherSet); 

在所有其他集合上。

有更有效的方法吗?

3 个答案:

答案 0 :(得分:2)

您的解决方案对我来说是正确的,如果我们理解当您编写Collections.sort()时,您正在根据它们的大小对集合列表进行排序。理由是,如果我们要使用set1.retainAll(set2)(如果集合是HashSet s),每个交叉点的运行时间应该与set1的元素数量大致呈线性关系。所以从最小的那个开始是有意义的。

答案 1 :(得分:0)

你的解决方案很好。在调用retainAll方法之前,不需要对数字进行排序。

答案 2 :(得分:0)

尝试使用

static <E> Sets.SetView<E> intersection(Set<E> set1, Set<?> set2) 

Google Guava