我有5套具有数值的套装。我有兴趣找到所有5套的交集。
现在,我正在考虑以下
Do a Collections.sort() on all 5 sets
找到最短的一组并做一个
shortestSet.retainAll(otherSet);
在所有其他集合上。
有更有效的方法吗?
答案 0 :(得分:2)
您的解决方案对我来说是正确的,如果我们理解当您编写Collections.sort()
时,您正在根据它们的大小对集合列表进行排序。理由是,如果我们要使用set1.retainAll(set2)
(如果集合是HashSet
s),每个交叉点的运行时间应该与set1
的元素数量大致呈线性关系。所以从最小的那个开始是有意义的。
答案 1 :(得分:0)
你的解决方案很好。在调用retainAll方法之前,不需要对数字进行排序。
答案 2 :(得分:0)