java工具:字典树(单词查找树/Trie树)的实现以及使用
项目地址
https://github.com/kylin-hunter/k-dic
文章目录
- 项目地址
- 前言
- 一、字典树
- 二、使用步骤
- 1 引入库
- 1.1 编译并发布到本地
- 1.2 gradle (gradle.org)
- 1.3 maven (maven.apache.org)
- 2 示例
- 2.1 纯字符串管理
- 2.2 带附加值的字符串管理
前言
字典树(单词查找树/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); //添加一个词,附加值:1trie.put("毕家庄", 2); trie.put("毕继安", 3);trie.put("毕平安", 4);trie.put("北京", 5);trie.put("海淀", 6);trie.put("海淀黄庄", 7); //添加一个词,附加值:7trie.put("海淀黄庄", 8); //再添加同一个词,,附加值:8trie.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 7trie.remove("海淀黄庄"); // 移除词Assertions.assertFalse(trie.contains("海淀黄庄")); // 词不存在Assertions.assertNull(trie.getValue("海淀黄庄")); // 附加值空
java工具:字典树(单词查找树/Trie树)的实现以及使用相关推荐
- LeetCode 425. 单词方块(Trie树+DFS)
文章目录 1. 题目 2. 解题 1. 题目 给定一个单词集合 (没有重复),找出其中所有的 单词方块 . 一个单词序列形成了一个有效的单词方块的意思是指从第 k 行和第 k 列 (0 ≤ k < ...
- 程序员面试金典 - 面试题 17.25. 单词矩阵(Trie树+DFS回溯,hard)
1. 题目 给定一份单词的清单,设计一个算法,创建由字母组成的面积最大的矩形,其中每一行组成一个单词(自左向右),每一列也组成一个单词(自上而下). 不要求这些单词在清单里连续出现,但要求所有行等长, ...
- c语言 trie树,C语言实现Trie树(字典树)的插入查找删除与遍历操作
Trie树,也称作是字典树,是一种哈希树的变种,查询效率较高.Trie树可以用于统计或者排序大量的字符串,比如对一系列字符串按照字典序排序. 字典树是一个多叉树,每一个节点上存储的不是一个字符串,而是 ...
- 海量路由表能够使用HASH表存储吗-HASH查找和TRIE树查找
千万别! 非常多人这样说,也包括我. Linux内核早就把HASH路由表去掉了.如今就仅仅剩下TRIE了,只是我还是希望就这两种数据结构展开一些形而上的讨论. 1.hash和trie/radix ha ...
- 海量路由表可以使用HASH表存储吗-HASH查找和TRIE树查找
千万别!很多人这样说,也包括我. Linux内核早就把HASH路由表去掉了,现在就只剩下TRIE了,不过我还是希望就这两种数据结构展开一些形而上的讨论. 1.hash和trie/radix hash和 ...
- LeetCode 527. 单词缩写(Trie树)
文章目录 1. 题目 2. 解题 1. 题目 给定一个由n个不重复非空字符串组成的数组,你需要按照以下规则为每个单词生成最小的缩写. 初始缩写由起始字母+省略字母的数量+结尾字母组成. 若存在冲突,亦 ...
- LeetCode 648. 单词替换(Trie树)
1. 题目 在英语中,我们有一个叫做 词根(root)的概念,它可以跟着其他一些词组成另一个较长的单词--我们称这个词为 继承词(successor).例如,词根an,跟随着单词 other(其他), ...
- python Trie树和双数组TRIE树的实现. 拥有3个功能:插入,删除,给前缀智能找到所有能匹配的单词...
#coding=utf-8 #字典嵌套牛逼,别人写的,这样每一层非常多的东西,搜索就快了,树高26.所以整体搜索一个不关多大的单词表 #还是O(1). ''' Python 字典 setdefault ...
- 二叉树、红黑树、B树、B+树、图、Trie树合集-----妈妈再也不用担心我的“树”拉!
这里把各种树做个总结,分别介绍各个树是什么,什么原理,什么特点,什么情况下使用,另外很多时候它们很多地方是相似的,还要加以区别,之前我身边一个很多年开发的经验的老开发还以为B树.B-树.B+树是三种树 ...
- 【java工具类】四级菜单如何实现树状结构展示JSON给前端
前言: 主要是传给前端进行树状结构操作比较好,这样可以关联上下四级选择项,所以需要把表中的数据List转成一个树状结构. 1.数据库数据是静态的四级目录 数据是这样的四级目录,没有特别明确的id进行关 ...
最新文章
- 解表化饮什么意思_为什么有人动不动就一身汗,有人再热也不出汗?中医告诉真实原因...
- MySQL索引原理及慢查询优化 美团
- 过于自嗨的《紫塞秋风》,怎么就成了行业教科书?
- P2467 [SDOI2010]地精部落
- 下列可以产生斜体字的html标签是,电子科技大学《网页设计与制作》20秋期末考试题目【标准答案】...
- PostgreSQL 视图、子查询
- nagios安装配置pnp4nagios-0.6.6
- 第十八节:教你如何使用ES6的Promise对象
- Swarm搭建Docker集群
- 一个基于WinCE平台的语音识别例子,利用微软speechAPI5.0
- 我的电脑缩略图模式盘符名字不见了
- Smobiler 窗体
- oracle软件 乱码,oracle 中文乱码解决办法
- html让光标位置,科技常识:html5中contenteditable 光标_如何设置光标位置
- 用了半年的时间,把python学到了能出书的程度
- 尚德机构退费难的问题
- VS2015专业版+opencv3.3环境配置以及出现计算机中丢失 opencv_world300d.dll的问题
- 19 - Dva框架基础
- project2016专业版最新密钥和下载
- STM32 外部中断详解(原理+配置代码)