快速字符串搜索,如startsWith()不等于()

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的包含方法

Dav*_*ven 9

你在这里寻找的是一个名为'trie'的数据结构:

http://en.wikipedia.org/wiki/Trie

它存储的字符串由前缀,在树的第一层包含字符串的第一个字符,第二级的第二个字符,索引树等.其结果是,它允许你提取的非常大的串集合的子集通过前缀非常快.