我有一個ConcurrentSkipListMap
。我需要刪除低於key
的元素。如何刪除元素以鍵入ConcurrentSkipListMap?
這是我如何可以執行它:
private ConcurrentNavigableMap<Double, MyObject> myObjectsMap = new ConcurrentSkipListMap<>();
//...
myObjectsMap = myObjectsMap.tailMap(10.25, false);
看起來不錯,但我感到困惑的這些事實:
1.
返回的映射受此映射支持,因此返回的地圖 中的更改會反映在此地圖中,反之亦然。
這是否意味着舊值不會被垃圾回收器清除?
I.e.我們刪除了舊地圖,現在我們有了一張新地圖。但是這張新地圖由舊地圖支持。那麼,舊地圖會發生什麼?它會被刪除還是永遠坐在記憶中?
2.
返回的映射將拋出嘗試 插入其範圍之外的關鍵一個IllegalArgumentException。
所以,現在我不能把新的關鍵小於10.25和超過最大值?
我很困惑。那麼如何正確地從ConcurrentSkipListMap中刪除元素呢?
將頭部內容複製到新地圖中不是最安全的:'myObjectsMap = new ConcurrentNavigableMap <>(myObjectsMap.headMap(10.25,false));' –