裏面我有兩個列表:
答:列表<MyCustomObject>
B.列出<MyCustomObject>優化的方式來檢查對象的價值之間的平等列表
MyCustomObject有各個領域。例如,一個場ID
在我的計劃,我需要檢查,如果同一ID兩個列表中存在。所以,目前我做嵌套迭代:
for(int i=0;i<a.size();i++) {
MyCustomObject obj = a.get(i);
for(int j=0;j<b.size();j++) {
if(obj.getId().equals(b.get(j).getId()) {
//do something
break;
}
}
}
正如我經常需要做這個手術,看起來我沒有優化的,因爲我經常遍歷一長串。
如何優化此操作?
難道你不能以'id'作爲關鍵字在'Map'中保存你的對象嗎? – beny23
它不能小於'O(n^2)'。所以我認爲它非常好。你可以使用一些內置函數,但仍然是一樣的。儘管這種類型的問題需要在http://codereview.stackexchange.com/中提出。 –
@tintinmj確定它可以在小於'O(n^2)'的情況下完成!將第一個列表ID插入「HashSet」後跟隨第二個列表中每個ID的「m * O(1)」搜索的「O(n)」將給出實際上仍是線性時間搜索的內容。 – Alnitak