【发布时间】:2019-02-11 15:32:12
【问题描述】:
我在 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 值的引用。当我在myList 中的一个项目中调用setter 函数时,相关值也在myMap 中更新,支持我的假设。但是,每当我从myList 中删除一个项目时,myMap 会继续在其中保留MyClass 实例。由于myMap 仍然有对它的引用,所以这个被移除的实例可能不是垃圾回收的。我说的对吗?
当值在其他地方被删除时,是否有任何自动方法从地图中删除键值对?
更新:B 类将 myList 传递给 Android 适配器。因此,我需要某种get 功能。 Collection 没有这样的方法。有什么建议吗?
【问题讨论】: