hrz*_*fer 3 java string performance search
我有一个有序列表(一个字典 - 100K字)和许多单词经常在这个列表中搜索.因此,性能是一个问题.我知道HashSet.contains(theWord)或Collections.binarySearch(sortedList,theWord)非常快.但实际上我并不是在寻找整个单词.
我想要的是让我们说搜索"se"并让所有单词以"se"开头.那么Java或任何库中是否有现成的解决方案?
一个更好的示例:在排序列表中,为以下操作提供快速解决方案
List.subList(String beginIndex,String endIndex)//返回间隔
myWordList.subList("ab","bc");
注意:这是一个非常相似的问题,但接受的答案并不令人满意. 覆盖HashSet的包含方法
你在这里寻找的是一个名为'trie'的数据结构:
http://en.wikipedia.org/wiki/Trie
它存储的字符串由前缀,在树的第一层包含字符串的第一个字符,第二级的第二个字符,索引树等.其结果是,它允许你提取的非常大的串集合的子集通过前缀非常快.