Какую структуру данных (Java) я должен использовать для хранения набора строк и их стандартной формы? - PullRequest
0 голосов
/ 02 мая 2019

Я пытаюсь создать словарь слов, который будет хранить слово и его «каноническую» форму, то есть алфавитную версию всех символов в строке.Затем я должен получить доступ ко всем словам, которые могут прийти из одной канонической формы.Например, если у меня есть слова «спорт» и «порты», моя каноническая форма - «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.

РЕДАКТИРОВАТЬ: Решено, я просто не думал оКарта>.Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...