我有一個list1<String>
和其他1000 list<String>
。我需要選擇具有最精確匹配值的列表。高效的方式來尋找最相似的名單<String>
今天我瀏覽每個list<String>
並與list1比較,將封面保存在一些排序列表中,最後選擇最相似的列表。
public static <T> List<T> intersection(List<T> list1, List<T> list2) {
List<T> list = new ArrayList<T>();
for (T t : list1) {
if(list2.contains(t)) {
list.add(t);
}
}
return list;
}
此操作遍歷所有1000個唯一列表需要花費時間,假設我有很多列表來比較它。
能否請你給我一個有效的方法/算法來做到這一點?
你的'list2.contains(t)'會給你O(n * m)的複雜度。也許你可以選擇更快的遏制檢查,因爲列表的大小也是高度。 – lschuetze