java中的retainAll非常慢......有没有更快的方法?

时间:2015-03-23 08:58:00

标签: java performance arraylist

我有一个大学的项目,«创建一个双语词典,比较两个文本(第二个是第一个的翻译)。

有三种文本来测试我们的程序。小的,输出在不到1秒的时间内产生,中等45秒,大到85分钟。

NetBeans表示,最长的方法是在ArrayList上使用«retainAll»。有没有更快的方法?

编辑:一小段代码,我必须检查每个单词/翻译的相关索引。

double ens1= list2.size();
double ens2=test.size();
//intersection of the both list
list2.retainAll(test);
//size of the intersection
double long_fin=list2.size();
//correlation index
correlation=(long_fin/(Math.sqrt(ens1*ens2)));

1 个答案:

答案 0 :(得分:2)

使用Set代替List。这大大减少了复杂性。

或者,您可以对两个列表进行排序,并在一个循环中实现retain-all。

(另外一条评论:使用int代替double - 这会让我们安全打字的开发人员紧张不安。)