Java中是否有Trie数据结构?

49

在http://www.superliminal.com/上发现 http://www.superliminal.com/sources/TrieMap.java.html - John Giotta
1个回答

62

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

这可能是因为Trie通常被设计用于存储字符串,而Java数据结构更加通用,通常可以保存任何Object(定义相等性和哈希运算),但有时会限制为Comparable对象(定义一个顺序)。没有通用的抽象概念来表示“一系列符号”,尽管CharSequence适用于字符串,我想你可以使用Iterable来处理其他类型的符号。

还有一个需要考虑的问题:当试图在Java中实现传统的Trie时,你很快就会发现Java支持Unicode。为了具有空间效率,你必须将Trie中的字符串限制为某些符号的子集,或者放弃通过以符号为索引的数组存储子节点的传统方法。这可能是Trie不被认为足够通用以包含在核心库中的另一个原因,并且如果你自己实现或使用第三方库,需要注意这一点。


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