TreeMap在自定義排序時的坑


這段時間在公司開發一個官網的咨詢內容錨文本需求,按需求來看,需要優先匹配長詞,如:后台同時設置了“小學數學”及“小學數學補習”那么,優先匹配“小學數學補習”。

原本這里我打算使用TreeMap來存儲數據,以便后面文本替換以自定義順序遍歷鍵。

可在敲完代碼后,發現部分我存儲的key,並沒有成功存儲到TreeMap。

如圖:

 

排查問題第一步:

  首先發現如圖所標識的問題。我個人認為是不是因為設置了自定義排序而引起的問題,於是將自定義排序方式去掉后,存入的數據正常,沒有缺少數據的情況。

 

 

排查問題第二步

既然是加了自定義排序所引發的問題,那就查看一下TreeMap在存儲數據時的過程是怎樣的吧

 (圖片看起略小的話,建議右鍵以新標簽頁打開)

 

 這才解釋清楚為啥一開始所遇到的問題:

1.數據缺失

2.部分key-value不匹配。

所以解決方式為:

在設置TreeMap的自定義排序時,必須設置先后兩個值存在算法相同的情況的判斷,且返回必須大於0或小於0,絕對不能有等於0的情況出現,否則key-value不匹配,會出大亂子!!!

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM