项目地址
https://github.com/kylin-hunter/k-dic
文章目录
前言
字典树(单词查找树/Trie树)的实现以及使用。
一、字典树
字典树又称单词查找树,Trie树,是一种树形结构,主要用于处理大量字符串的查找工作。
二、使用步骤
1 引入库
1.1 编译并发布到本地
gradle clean build publishToMavenLocal-x test
1.2 gradle (gradle.org)
implementation'io.github.kylin-hunter:k-dic-app:1.0.4'
1.3 maven (maven.apache.org)
<dependency>
<groupId>io.github.kylin-hunter</groupId>
<artifactId>k-dic-app</artifactId>
<version>1.0.4</version>
</dependency>
2 示例
2.1 纯字符串管理
代码示例:
Trie<?> trie = new Trie<>(); // 构造一个Trie树
trie.put("毕庄"); // 添加词
trie.put("毕家庄");
trie.put("毕继安");
trie.put("毕平安");
trie.put("海淀");
trie.put("海淀黄庄");
trie.put("中华人民共和国");
trie.put("中华");
trie.put("中华民族");
Assertions.assertFalse(trie.contains("毕")); // 词不存在
Assertions.assertTrue(trie.contains("毕庄")); // 词存在
Assertions.assertTrue(trie.contains("毕继安")); // 词存在
Assertions.assertTrue(trie.contains("海淀黄庄")); // 词存在
trie.remove("海淀黄庄"); // 移除词
Assertions.assertFalse(trie.contains("海淀黄庄")); // 词不存在
2.2 带附加值的字符串管理
代码示例:
Trie<Integer> trie = new Trie<>(); // 构造一个Trie,附加Integer信息
trie.put("毕庄", 1); //添加一个词,附加值:1
trie.put("毕家庄", 2);
trie.put("毕继安", 3);
trie.put("毕平安", 4);
trie.put("北京", 5);
trie.put("海淀", 6);
trie.put("海淀黄庄", 7); //添加一个词,附加值:7
trie.put("海淀黄庄", 8); //再添加同一个词,,附加值:8
trie.put("中华人民共和国", 9);
trie.put("中华", 10);
trie.put("中华民族", 11);
Assertions.assertFalse(trie.contains("毕")); // 词不存在
Assertions.assertTrue(trie.contains("毕庄")); // 词存在
Assertions.assertTrue(trie.contains("毕继安"));// 词存在
Assertions.assertTrue(trie.contains("海淀黄庄")); // 词存在
Assertions.assertEquals(10, trie.getValue("中华")); //读取附加值:10
Assertions.assertEquals(Arrays.asList(8, 7), trie.getValues("海淀黄庄")); //读取多个附加值:8 7
trie.remove("海淀黄庄"); // 移除词
Assertions.assertFalse(trie.contains("海淀黄庄")); // 词不存在
Assertions.assertNull(trie.getValue("海淀黄庄")); // 附加值空