项目地址

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树)的实现以及使用相关推荐

  1. LeetCode 425. 单词方块(Trie树+DFS)

    文章目录 1. 题目 2. 解题 1. 题目 给定一个单词集合 (没有重复),找出其中所有的 单词方块 . 一个单词序列形成了一个有效的单词方块的意思是指从第 k 行和第 k 列 (0 ≤ k < ...

  2. 程序员面试金典 - 面试题 17.25. 单词矩阵(Trie树+DFS回溯,hard)

    1. 题目 给定一份单词的清单,设计一个算法,创建由字母组成的面积最大的矩形,其中每一行组成一个单词(自左向右),每一列也组成一个单词(自上而下). 不要求这些单词在清单里连续出现,但要求所有行等长, ...

  3. c语言 trie树,C语言实现Trie树(字典树)的插入查找删除与遍历操作

    Trie树,也称作是字典树,是一种哈希树的变种,查询效率较高.Trie树可以用于统计或者排序大量的字符串,比如对一系列字符串按照字典序排序. 字典树是一个多叉树,每一个节点上存储的不是一个字符串,而是 ...

  4. 海量路由表能够使用HASH表存储吗-HASH查找和TRIE树查找

    千万别! 非常多人这样说,也包括我. Linux内核早就把HASH路由表去掉了.如今就仅仅剩下TRIE了,只是我还是希望就这两种数据结构展开一些形而上的讨论. 1.hash和trie/radix ha ...

  5. 海量路由表可以使用HASH表存储吗-HASH查找和TRIE树查找

    千万别!很多人这样说,也包括我. Linux内核早就把HASH路由表去掉了,现在就只剩下TRIE了,不过我还是希望就这两种数据结构展开一些形而上的讨论. 1.hash和trie/radix hash和 ...

  6. LeetCode 527. 单词缩写(Trie树)

    文章目录 1. 题目 2. 解题 1. 题目 给定一个由n个不重复非空字符串组成的数组,你需要按照以下规则为每个单词生成最小的缩写. 初始缩写由起始字母+省略字母的数量+结尾字母组成. 若存在冲突,亦 ...

  7. LeetCode 648. 单词替换(Trie树)

    1. 题目 在英语中,我们有一个叫做 词根(root)的概念,它可以跟着其他一些词组成另一个较长的单词--我们称这个词为 继承词(successor).例如,词根an,跟随着单词 other(其他), ...

  8. python Trie树和双数组TRIE树的实现. 拥有3个功能:插入,删除,给前缀智能找到所有能匹配的单词...

    #coding=utf-8 #字典嵌套牛逼,别人写的,这样每一层非常多的东西,搜索就快了,树高26.所以整体搜索一个不关多大的单词表 #还是O(1). ''' Python 字典 setdefault ...

  9. 二叉树、红黑树、B树、B+树、图、Trie树合集-----妈妈再也不用担心我的“树”拉!

    这里把各种树做个总结,分别介绍各个树是什么,什么原理,什么特点,什么情况下使用,另外很多时候它们很多地方是相似的,还要加以区别,之前我身边一个很多年开发的经验的老开发还以为B树.B-树.B+树是三种树 ...

  10. 【java工具类】四级菜单如何实现树状结构展示JSON给前端

    前言: 主要是传给前端进行树状结构操作比较好,这样可以关联上下四级选择项,所以需要把表中的数据List转成一个树状结构. 1.数据库数据是静态的四级目录 数据是这样的四级目录,没有特别明确的id进行关 ...

最新文章

  1. SVN详解-linux+windows
  2. bootstrap 导航学习
  3. R语言实战应用-lightgbm 算法优化:不平衡二分类问题(附代码)
  4. HUE配置文件hue.ini 的database模块详解(包含qlite、mysql、 psql、和oracle)(图文详解)(分HA集群和非HA集群)...
  5. 在MySql中,这四种方法可以避免重复插入数据!
  6. linux网卡绑定和漂移,LINUX修改、增加IP的方法,一张网卡绑定多个IP/漂移IP【转】...
  7. 如何调节电脑显示屏来保护双眼的小技巧
  8. 高薪编程,品牌公司——人往高处走,作为程序员的你够格吗
  9. python sys模块详解_python中os和sys模块的区别与常用方法总结
  10. 在Openstack上创建并访问Kubernetes集群
  11. MySQL双主高可用架构之MMM实战
  12. 人工智能数学基础---不定积分5:常用不定积分表
  13. 基于PLC四层电梯模型控制系统课程设计
  14. 微信撤回服务器有没有,无需任何软件, 告诉你如何查看微信撤回的图片!
  15. springboot 将本地引用的lib一起打包
  16. C语言常用算法题 (嵌入式算法题) 28道
  17. Python含金量较高的证书以及学习困难盘点!
  18. android开发打开第三方库,Android开发NDK调用三方so库
  19. 笔记-动物病理(炎症)
  20. js获取当前ip地址

热门文章

  1. Oracle vm virtualBox虚拟机iso镜像安装
  2. shell脚本-----快速进入docker容器
  3. 朴素贝叶斯分类器原理解析与python实现
  4. Java初级面试题整理 (147题)。
  5. Windows系统分盘
  6. 【Python考试资源】包含重点知识、坑点知识,期末考试看这一份就够了
  7. 视频会议进入云时代,为何企业需要华为云会议
  8. ubuntu18.04 安装qt5.12.8及环境配置
  9. React Hooks 路由 withRouter不能使用解决方法
  10. 02FFmpeg-音视频基本概念