我有 5 个具有数值的集合。我有兴趣找到所有 5 个集合的交集。
现在,我想到了以下几点
Do a Collections.sort() on all 5 sets
找到最短的集合并做一个
shortestSet.retainAll(otherSet);
在所有其他集合上。
有没有更有效的方法?
最佳答案
如果我们理解当您编写 Collections.sort()
时您正在根据集合的大小对集合列表进行排序,那么您的解决方案对我来说是正确的。基本原理是,如果我们要使用 set1.retainAll(set2)
(并且如果集合是 HashSet
),每个交叉点运行时间应该大致呈线性set1
的元素数量。因此,从最小的开始是有意义的。
关于java - 找到5组交集的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16242596/