У меня есть 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