Таким образом, «гребень» ArrayList содержит строки одинаковой длины и вариации некоторых символов. В худшем случае этот список может содержать около 100 000 слов. Функция checkWord (String str) принимает одно слово в качестве параметра и проверяет, присутствует ли это слово в словаре Hashtable (который содержит еще 90 000 слов, текстовый файл был прочитан в эту хэш-таблицу). Таким образом, в основном код должен проверить, какой из слов из списка «гребенка» присутствует в словаре «HashTable». В худшем случае этот поиск занимает до 5 минут. Я хочу реализовать Runnable и распараллелить его, но не знаю, как это сделать.Как правильно реализовать Runnable для поиска элемента в Hashtable?
Например: список расчесок содержит различные орфографические ошибки CURMUDGEON и самого правильного слова. Этот список содержит 98415 из них. CURMUEGEON CURMUEGEOH CURMUEGEOJ CURMUEGEKN и т. Д. Поэтому, проверяя, присутствует ли каждое из этих слов в хэш-таблице, требуется 200 секунд. Я хочу, чтобы сбить этот раз
class key implements Runnable{
public static ArrayList<String> comb;
public static Hashtable<String,String> dictionary;
public static void main(String[] args) throws IOException{
key obj = new key();
Thread thread1 = new Thread(obj);
thread1.start();
}
public static Boolean checkWord(String str){
String toCheck = str.toLowerCase();
if(dictionary.contains(toCheck)){
return true;
}
else
return false;
}
public void run(){
for(String x:comb)
if (checkWord(x))
filtered.add(x);
}
При поиске 100 000 слов в HashMap должно быть порядка секунд, если это возможно. Нет смысла делать это многопоточным. Вы уверены, что «словарь» - действительно структура данных на основе хэш-таблицы? Пожалуйста, предоставьте [mcve]. –
@JonSkeet Спасибо, я отредактировал и обновил свой вопрос. – daipayan
Хмм ... 1) Почему это «Карта», а не «Набор»? Каковы значения «Карты»? 2) Параллелизация происходит за счет сложности. Если значения неактуальны, у нас есть лучшие алгоритмы для [set intersection] (http://stackoverflow.com/questions/4642172/computing-set-intersection-in-linear-time). – dhke