我有兩個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