Если вы алфавитируете буквы, а не хешируете их, они должны быть одинаковыми ...
Map<String, List<String>> words = new HashMap<String, List<String>>();
for(String word : incomingWords) {
final String key = alphabetize(word);
if(words.contains(key)){
words.get(key).add(word);
} else {
words.put(key, new ArrayList<String>());
words.get(key).add(word);
}
}
Теперь у вас есть Map
слов, которые являются анаграммами ... У вас также будет List
с в Map
, которые имеют только 1 запись, вы можете удалить их с карты, чтобы просто сохранить Map
из тех, которые имеют другие анаграммы из вашего словаря ...