相关疑难解决方法(0)

在Java中有效地计算两个集合的交集?

在Java中查找两个非稀疏集合的交集大小的最有效方法是什么?这是一个我将大量调用大型集合的操作,因此优化很重要.我无法修改原始集.

我看过Apache Commons CollectionUtils.intersection,看起来很慢.我目前的方法是采用两组中较小的一组,克隆它,然后在两组中较大的一组上调用.retainAll.

public static int getIntersection(Set<Long> set1, Set<Long> set2) {
    boolean set1IsLarger = set1.size() > set2.size();
    Set<Long> cloneSet = new HashSet<Long>(set1IsLarger ? set2 : set1);
    cloneSet.retainAll(set1IsLarger ? set1 : set2);
    return cloneSet.size();
}
Run Code Online (Sandbox Code Playgroud)

java optimization performance set

55
推荐指数
4
解决办法
6万
查看次数

有效地找到可变数量的字符串集的交集

我有一个可变数量的ArrayList,我需要找到它的交集.字符串数量的实际上限可能在35左右,但可能更多.我不想要任何代码,只需要有效的想法.我有一个实现,我即将开始编码,但想听听其他一些想法.

目前,只是考虑我的解决方案,看起来我应该有Θ(n 2)的渐近运行时间.

谢谢你的帮助!

tshred

编辑:为了澄清,我真的只是想知道是否有更快的方法来做到这一点.比Θ(n 2)快.

java theory big-o intersection set

29
推荐指数
4
解决办法
1万
查看次数

标签 统计

java ×2

set ×2

big-o ×1

intersection ×1

optimization ×1

performance ×1

theory ×1