我在 A 类中有以下声明:
Map<String, MyClass> myMap = Collections.synchronizedMap(new LinkedHashMap<String, MyClass>());
A类也有这个功能:
public List<MyClass> getMapValuesAsList() {
return new ArrayList<>(myMap.values());
}
在 B 类中,我有一个List这样的初始化:
List<MyClass> myList = cart.getMapValuesAsList();
我假设的是myList保留对myMap. 当我在 中的项目中调用 setter 函数时myList,相关值也在 中更新myMap,支持我的假设。但是,每当我从 中删除项目时myList,都会myMap继续将MyClass实例保留在其中。这个被移除的实例可能不会被垃圾回收,因为它myMap仍然有一个对它的引用。我对吗?
当值在其他地方被删除时,是否有任何自动方法可以从地图中删除键值对?
更新:B 类传递myList给 Android 适配器。因此,我需要某种get功能。Collection没有这样的方法。有什么建议吗?
万千封印
相关分类