• TreeMap在自定义排序时的坑


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

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

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

    如图:

    排查问题第一步:

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

    排查问题第二步

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

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

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

    1.数据缺失

    2.部分key-value不匹配。

    所以解决方式为:

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

     

  • 相关阅读:
    # ConfigureAwait常见问题解答
    # Oracle 常用语句
    # C# 中的Task创建指南
    ASP.NET Core Web API 跨域(CORS) Cookie问题
    Order by 优化
    VMware 安装 CentOS 7
    ThreadLocal 内存泄漏问题深入分析
    Zookeeper 如何保证分布式系统数据一致性
    Redis 5.0 安装
    Redisson 实现分布式锁的原理分析
  • 原文地址:https://www.cnblogs.com/qukun/p/12291476.html
Copyright © 2020-2023  润新知