项目地址

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. 解表化饮什么意思_为什么有人动不动就一身汗,有人再热也不出汗?中医告诉真实原因...
  2. MySQL索引原理及慢查询优化 美团
  3. 过于自嗨的《紫塞秋风》,怎么就成了行业教科书?
  4. P2467 [SDOI2010]地精部落
  5. 下列可以产生斜体字的html标签是,电子科技大学《网页设计与制作》20秋期末考试题目【标准答案】...
  6. PostgreSQL 视图、子查询
  7. nagios安装配置pnp4nagios-0.6.6
  8. 第十八节:教你如何使用ES6的Promise对象
  9. Swarm搭建Docker集群
  10. 一个基于WinCE平台的语音识别例子,利用微软speechAPI5.0
  11. 我的电脑缩略图模式盘符名字不见了
  12. Smobiler 窗体
  13. oracle软件 乱码,oracle 中文乱码解决办法
  14. html让光标位置,科技常识:html5中contenteditable 光标_如何设置光标位置
  15. 用了半年的时间,把python学到了能出书的程度
  16. 尚德机构退费难的问题
  17. VS2015专业版+opencv3.3环境配置以及出现计算机中丢失 opencv_world300d.dll的问题
  18. 19 - Dva框架基础
  19. project2016专业版最新密钥和下载
  20. STM32 外部中断详解(原理+配置代码)

热门文章

  1. oracle字符转换为大写,oracle函数把字符串转换成小写
  2. 复现fastreid学到的Linux指令等知识
  3. 用于开发移动应用的英特尔® HTML5 工具
  4. shell脚本-思维导图
  5. js面向对象编程思想
  6. swiper中自定义分页器内容
  7. windows7怎么恢复出厂设置_Mac系统误删或者恢复出厂设置以后怎么找回资料
  8. oracle是用什么端口号,oracle10g常用端口号
  9. IT渠道管理五大难题
  10. win10/11彻底关闭自动更新