我应该使用什么数据结构(java)存储一组字符串及其标准格式?

时间:2019-05-02 13:14:10

标签: java sorting dictionary arraylist hashmap

我正在尝试创建一个单词词典,该词典将存储一个单词及其“规范”形式,即String中所有字符的字母顺序版本。然后,我必须访问所有可能来自一种规范形式的单词。例如,如果我有单词“ sport”和“ ports”,则我的佳能形式为“ oprst”,而我希望能够仅从规范形式中同时检索“ sport”和“ ports”。

我拥有ArrayList形式的字典,并且我希望能够访问字典中与一种规范形式匹配的所有单词。

我尝试使用HashMap,但是我意识到,因为我需要能够从不起作用的规范形式访问原始单词。我尝试使用ArrayList,但无法考虑如何将String与其规范形式进行匹配。也许通过创建一个普通单词的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,因此我不太了解如何充分利用它们。

编辑:解决了,我只是没有想到Map>。谢谢。

0 个答案:

没有答案