首先在文章的开头声明一下哈,本文只是介绍一种Java蛮力键树的实现,并没有什么高深的数据结构,所以数据量不超过百万字符的可以参考,数据量太大的另请高明吧。另外,后面的键树代码实际上不仅适用于中文存储和查找,只要是字符串形式的数据都可以存储。比如:“锄禾日当午”、“a+你好啊234#jfjf”这样形式的数据都可以放进去(韩文柬埔寨文怎么混搭都可以,只要编码方式别搞混)。
键树是一种非常简单的数据结构,相信学过的人都知道,没学过的人一看就明白:
图1 一棵键树
好了,既然它这么简单,那我就不介绍了,想要完整阅读键树定义的读者可以随便百度,下面开始设计分析。传统键树拥有两种可选的存储结构,分别是双链树和多重链表(又称为Trie树)。多重链表表示法适用于键树中结点的度较大的情况,因此本文在实现中文键树时考虑使用多重链表结构。键树将一条完整的信息串分割成一层一层的结点结构,对应到中文,即每一个结点上存储了一个汉字信息。典型的键树通常采用数组来实现结点后代的存储,这是源于英文字母只有固定26个。鉴于中文无法同样考虑,在实现时采用ArrayList来实现后代的存储。这既保证了查询速度,又避免数组越界的问题。因此,一个结点的结构就是:
class TrieNode {
public String value;
public ArrayList<TrieNode> ptr &