扩展Concurrent Trees支持基数树占位符查找

今天主要简单讲一下如何扩展开源高效查询JAVA项目 concurrent-trees 中 使用基数树进行通配符查找。

基数树精确插入和查找

想要扩展其查询方法 , 首先要先理解其基本方法的实现从而才能更好的进行扩展。因此我选择了基数树的精确字符字符串查找作为参考。

首先将项目Clone到本地后,我们先去查看其单元测试类以及对应方法。

然后再找到查找的核心方法进行debugger。只要足够细心和耐心就可以很快摸清其查找逻辑。

具体逻辑如图所示感兴趣的同学,可以自己通过运行单元测试类进行debugger。

结合上一篇文章的逻辑。我们先往基数树中插入三个字符串TEST,TEAM,TOAST 。 他们的数据结构如图所示

当我们调用方法查找字符串TEST 时(getValueForExactKey("TEST")) 具体查找逻辑如图

了解到了 如何精确匹配,那么我们再来看如何插入到基数树中。

剩下的字符串插入的代码逻辑如上图数据结构演变一样 ,我就不过多赘述,感兴趣的同学可以研究一下源码。

基于基数树精确插入和查找扩展通配符查找

查找

熟悉了基数树的精确查找,那我们来扩展一下通配符的查找方法。

首先在源码中加入通配符查找方法签名:

然后我们进行通配符查找的具体方法实现:

同理插入的时候 对应的逻辑该文章一致, 大家有兴趣可以自己去钻研一下 。

代码位置入口为:

小结

虽然是基于已有项目的扩展, 但是在扩展源码的过程中,自己也很有收获,这里只是抛砖引玉,我的实现就是最简单粗暴的,如果有算法大神的话 希望能给提供一些更快更高效的查询算法。

代码地址:
https://github.com/NealLemon/concurrent-trees/tree/develop

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容