我有一个ConcurrentSkipListMap
. 我需要删除低于 then 的元素key
。
这是我如何执行它:
private ConcurrentNavigableMap<Double, MyObject> myObjectsMap = new ConcurrentSkipListMap<>();
//...
myObjectsMap = myObjectsMap.tailMap(10.25, false);
看起来不错,但我对这些事实感到困惑:
1.
返回的地图由此地图支持,因此返回地图中的更改会反映在此地图中,反之亦然。
这是否意味着垃圾收集器不会删除旧值?
即我们删除了旧地图,现在我们有了一张新地图。但是这张新地图是由旧地图支持的。那么,旧地图会发生什么?它会被删除还是会永远留在记忆中?
2.
返回的映射将在尝试在其范围之外插入键时抛出 IllegalArgumentException。
那么,现在我不能放置小于 10.25 且大于上一个最大值的新键?
我很困惑。那么我需要如何正确地从 ConcurrentSkipListMap 中删除元素?