• TreeMap在自定义排序时的坑


    这段时间在公司开发一个官网的咨询内容锚文本需求,按需求来看,需要优先匹配长词,如:后台同时设置了“小学数学”及“小学数学补习”那么,优先匹配“小学数学补习”。

    原本这里我打算使用TreeMap来存储数据,以便后面文本替换以自定义顺序遍历键。

    可在敲完代码后,发现部分我存储的key,并没有成功存储到TreeMap。

    如图:

    排查问题第一步:

      首先发现如图所标识的问题。我个人认为是不是因为设置了自定义排序而引起的问题,于是将自定义排序方式去掉后,存入的数据正常,没有缺少数据的情况。

    排查问题第二步

    既然是加了自定义排序所引发的问题,那就查看一下TreeMap在存储数据时的过程是怎样的吧

     (图片看起略小的话,建议右键以新标签页打开)

     这才解释清楚为啥一开始所遇到的问题:

    1.数据缺失

    2.部分key-value不匹配。

    所以解决方式为:

    在设置TreeMap的自定义排序时,必须设置先后两个值存在算法相同的情况的判断,且返回必须大于0或小于0,绝对不能有等于0的情况出现,否则key-value不匹配,会出大乱子!!!

     

  • 相关阅读:
    Jedis API操作Redis数据库
    Go开发环境安装与环境变量配置
    Java中使用md5进行hash运算
    oracle创建表空间、用户
    CentOS安装MySQL
    Go语言之快速排序
    软件包管理rpm和yum
    第十一节:configParse模块
    redis数据库
    tcpdump命令
  • 原文地址:https://www.cnblogs.com/qukun/p/12291476.html
Copyright © 2020-2023  润新知