我有两个ArrayList的一个& B都ArrayList的大小更多的则是50000。我想对它们进行比较,并从一个ArrayList中删除B和添加剩余对象为新的ArrayList℃。比较,并创造新的ArrayList
我的代码是在这里:
c = new ArrayList<String>(a);
c.removeAll(b);
,我也试试这个代码
for (int i = 0; i < a.size(); i++) {
if (!b.contains(a.get(i))) {
c.add(a.get(i));
}
}
都比较过程正在采取大量的时间。
如何解决和优化这个问题。
你需要使用的ArrayList,或者你可以使用另一个容器?例如一套。 – khelwood 2015-03-31 13:36:10
不,我只需要使用Arraylist,因为在创建Arralist之后,我需要传递其他类并再次进行比较过程并显示到列表视图中。 – 2015-03-31 13:40:25
正如@khelwood所写,另一个容器可能会对您有所帮助,因为两个示例代码均以N^2运行,在这种情况下,将执行50000 * 50000次比较。如果你至少把'b'变成'Set'(例如'HashSet'),'b.contains()'将是恒定时间,所以性能应该会提高。 – dnet 2015-03-31 13:46:00