iT邦幫忙

0

Java 限制Map大小

  • 分享至 

  • xImage

請問一下,我想限制Map的大小
google後有找到一些LinkedHashMap的使用範例
改寫方法後這個Map也符合FIFO

不過目前遇到一個問題
就是假設我現在Map的大小限制為10
當我存資料到第九筆時
再更新第一筆的資料後
繼續塞第十和第十一筆

這時因為超過限制的大小
所以最舊的資料被刪除了
print後發現是第一筆被刪掉了

但期望的行為是第一筆因為有被更新過所以並不會被當成最舊的資料
應該是沒被更新過的第二筆資料被刪除
請問這部分應該怎麼改寫比較好

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
海綿寶寶
iT邦大神 1 級 ‧ 2022-01-26 16:11:54

可能是因為「最舊的資料」的資料的定義
最早插入的資料而非有更新的資料

改寫的方法就是「把更新改成 刪除+插入」
類似這樣

hm1.remove(1);
hm1.put(1, "New 1");  //原本只有這列

原本直接修改第1筆的結果
https://ithelp.ithome.com.tw/upload/images/20220126/20001787vXFcr075dL.png
把更新改成 刪除+插入的結果
https://ithelp.ithome.com.tw/upload/images/20220126/20001787uFkz8ENmHv.png

我要發表回答

立即登入回答