我想实现Trie的高速内存实现,以创建自动建议/拼写检查器的后端.
是否有一些基于内存实现的良好实现,如hazlecast.
另外哪种java开源工具最适合这些用法
解决方法:
我会使用像TreeSet这样的普通NavigableSet.它内置并支持范围搜索.
NavigableSet words = new TreeSet();
// add words.
String startsWith = ...
SortedSet matching = words.subSet(startsWith, startsWith + '\uFFFF');
如果您想要更高效的内存,可以使用数组.
List words = new ArrayList();
words.add("aa");
words.add("ab");
words.add("ac");
words.add("ba");
Collections.sort(words);
String startsWith = "a";
int first = Collections.binarySearch(words, startsWith);
int last = Collections.binarySearch(words, startsWith.concat("\uFFFF"));
if (first < 0) first = ~first;
if (last < 0) last = ~last - 1;
for (int i = first; i <= last; i++) {
System.out.println(words.get(i));
}
标签:java,memory
来源: https://codeday.me/bug/20190704/1377688.html