我想在Java中使用Trie,是否有可用的实现?(我尝试寻找一个,但没有找到。)
我想在Java中使用Trie,是否有可用的实现?(我尝试寻找一个,但没有找到。)
在Java核心库中没有Trie数据结构。
这可能是因为Trie通常被设计用于存储字符串,而Java数据结构更加通用,通常可以保存任何Object
(定义相等性和哈希运算),但有时会限制为Comparable
对象(定义一个顺序)。没有通用的抽象概念来表示“一系列符号”,尽管CharSequence
适用于字符串,我想你可以使用Iterable
来处理其他类型的符号。
还有一个需要考虑的问题:当试图在Java中实现传统的Trie时,你很快就会发现Java支持Unicode。为了具有空间效率,你必须将Trie中的字符串限制为某些符号的子集,或者放弃通过以符号为索引的数组存储子节点的传统方法。这可能是Trie不被认为足够通用以包含在核心库中的另一个原因,并且如果你自己实现或使用第三方库,需要注意这一点。