最佳开源内存 Java 应用程序,用于实现 Trie

4

我希望实现一个高速的Trie内存实现,以创建后端自动建议/拼写检查。 是否已有一些基于内存实现(如Hazlecast)的好的实现? 还有哪个Java开源工具最适合这种用法?

1个回答

2

我会使用一个普通的NavigableSet,例如TreeSet。它内置支持范围搜索。

 NavigableSet<String> words = new TreeSet<String>();
 // add words.
 String startsWith = ...
 SortedSet<String> matching = words.subSet(startsWith, startsWith + '\uFFFF');

如果您需要更高效的内存使用,可以使用数组。
List<String> words = new ArrayList<String>();
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));
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接