Я пытаюсь создать словарь слов, который будет хранить слово и его «каноническую» форму, то есть алфавитную версию всех символов в строке.Затем я должен получить доступ ко всем словам, которые могут прийти из одной канонической формы.Например, если у меня есть слова «спорт» и «порты», моя каноническая форма - «oprst», и я хочу иметь возможность извлекать «спорт» и «порты» только из канонической формы.
У меня есть словарь в виде ArrayList, и я хочу иметь возможность получить доступ ко всем словам из словаря, которые соответствуют одной канонической форме.
Я пытался использовать HashMap, но понял, чтопотому что мне нужно иметь доступ к исходным словам из канонической формы, которая не работает.Я пытался использовать ArrayList, но не могу придумать, как это сделать, чтобы сопоставить строку с ее канонической формой.Может быть, создав один ArrayList из нормальных слов, затем другой с канонической формой для каждого слова с соответствующим индексом, но я чувствую, что должен быть более эффективный способ.
Попытка карты:
Map end = new HashMap<String,String>(words.size());
for(int i=0; i < words.size(); i++){
end.put(input,canonize(input));
}
return end;
Попытка ArrayList (идея заключалась в том, что я разделил бы массив через запятую):
for(int i=0; i < words.size(); i++){
String input = words.get(i);
words.set(i,input + "," + canonize(input));
}
return words;
Проблема с обоими этими методами заключается в том, что я не могу найти способ вернуть всеслова, которые соответствуют одной канонической форме.Я могу выяснить, есть ли слово в словаре, но я хочу, чтобы я мог в основном взять кучу букв, «канонизировать» их, а затем найти все слова, используя эти буквы из формы канона.
Я огляделся и нашел троичные деревья поиска, но я не совсем понимаю, как их использовать достаточно хорошо, так как я все еще изучаю Java.
РЕДАКТИРОВАТЬ: Решено, я просто не думал оКарта>.Спасибо.