2011-11-02 66 views
28

可能重复:
Where do I find a standard Trie based map implementation in Java?Java中有Trie吗?

我想在Java中使用的特里,是我可以使用一个实现? (我试图寻找一个,但我没有找到它)。

+0

发现http://www.superliminal.com/ http://www.superliminal.com/sources/TrieMap.java.html –

+0

你确定[你搜索了“trie java”on Google](http: //www.google.com/search?q=trie+java&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:es-ES:official&client=firefox-a)? – m0skit0

回答

37

核心Java库中没有trie数据结构。

这可能是因为尝试通常设计为存储字符串,而Java数据结构更通用,通常持有任何Object(定义相等和散列操作),尽管它们有时仅限于Comparable对象(定义订单)。 “一系列符号没有共同的抽象”,尽管CharSequence适用于字符串,我想你可以用Iterable做其他类型的符号。

这里还有一点需要考虑:当试图在Java中实现传统的trie时,您很快就会遇到Java支持Unicode的事实。为了获得任何空间效率,您必须将字典中的字符串限制为符号的某个子集,或者放弃将子节点存储在由符号索引的数组中的传统方法。这可能是另一个原因,为什么尝试不被认为通用目的足以包含在核心库中,以及如果您实施自己的或使用第三方库的时候需要注意的地方。