找出两个排序列表是否包含相同元素Java的有效方法。

sixtytrees:

我有一个搜索余数的紧密循环。一个清单primeFactors它的第n个元素包含n的素数分解的排序列表。我正在检查是否cd互素checkIfPrimes

boolean checkIfPrimes(int c, int d, List<List<Integer>> primeFactors) {
    List<Integer>  common = new ArrayList<>(primeFactors.get(d)); //slow
    common.retainAll(primeFactors.get(c));        
    return (common.isEmpty());
}

primeFactors.get(d).retainAll(primeFactors.get(c))看起来很有希望,但是它将改变我的可重用primeFactors对象。

创建一个新对象相对较慢。有没有办法加快这一步骤?我可以以某种方式利用列表已排序的事实吗?我应该改用数组吗?

DwB:

设置操作应比数组操作快。只是为了踢球,请考虑尝试一下,并将性能与流性能进行比较:

final Set<Integer> commonSet;
final Set<Integer> cSet = new HashSet<Integer>();
final Set<Integer> dSet = new HashSet<Integer>();

cSet.addAll(primeFactors.get(c));
dSet.addAll(primeFactors.get(d));

commonSet = dSet.retainAll(cSet);

return (commonSet.isEmpty());

另外,考虑使用List<Set<Integer>> primeFactors而不是,List<List<Integer>> primeFactors因为我怀疑您实际上没有一个主要因素列表,但实际上有一组主要因素。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

确定两个列表中的元素是否相同的有效方法

如何有效地离开外部联接两个排序列表

比较两个列表并删除相同列表的最有效方法

复制或合并包含相同对象的两个ArrayList的有效方法

知道字典中是否有两个以上相同值的有效方法

检查两个列表是否包含相同的元素

查找列表中两个元素的所有组合的最有效方法

在两个列表之间进行“包含”的有效方法

如何有效地检查字符串是否包含两个列表中的至少一个元素

确定在排序序列中是否存在两个整数 X 和 Y 使得 X XNOR Y = -1 的最有效方法是什么?

查找两个不同列表是否包含完全相同的元素的简单方法?

检查两个java列表是否包含相同的对象,与元素的顺序和数量无关

检查列表元素是否包含另一个列表的所有元素的有效方法

查看数字是否包含在未排序的两个数字间隔中的最有效方法?

有效负载包含两个或多个具有相同目标路径的文件

在两个不同列表中查找相同索引号以比较值的最有效方法

在android中,比较两个文件以确定它们是否相同的最有效方法是什么?

两个组具有相同的名称(但不同的 gid)是否有效?

序言中仅包含两个元素的排序列表

如何在Python中有效比较两个无序列表(不是集合)?

比较两个记住每个唯一元素来源的列表的有效方法

如何有效地找到两个列表中匹配元素的索引

有效负载包含两个或更多文件

如何(有效)检查两个元素是否相差10

加入两个时间序列的最有效方法

基于两个numpy数组获取排序索引的最有效方法

什么是基于两个列值对Spark Dataset排序的有效方法?

结合列表或无值的两个列表的有效方法

给定N个排序的数组,请检查是否有两个包含至少两个公共元素的数组