我有一个 Map 的语法为 Map<String, String> testMap = new HashMap<String, String>();
.
在这张 map 中可以有 1000 个数据。
当我的应用程序需要新的数据列表时,我必须清除 map 。但是当我看到 Map.clear() 的代码为
/**
* Removes all of the mappings from this map.
* The map will be empty after this call returns.
*/
public void clear() {
modCount++;
Entry[] tab = table;
for (int i = 0; i < tab.length; i++)
tab[i] = null;
size = 0;
}
我意识到 clear 方法会循环 n 次(其中 n 是 Map 中的数据数)。所以我认为有一种方法可以将该 Map 重新定义为 testMap = new HashMap<String, String>();
并且以前使用过的 map 将被垃圾收集。
但我不确定这是否是一个好方法。我正在开发移动应用程序。
你能指导我吗?
最佳答案
复杂的问题。让我们看看会发生什么。
您实例化一个新实例,该实例由新数组支持。因此,垃圾收集器应该清除之前映射中的所有键和值,并清除对自身的引用。所以 O(n) 算法无论如何都会执行,但是在垃圾收集器线程中。对于 1000 条记录,您不会看到任何差异。
但。业绩guide告诉您最好不要创建新对象,如果可以的话。所以我会使用 clear()
方法。
无论如何,尝试两种变体并尝试测量。始终测量!
关于java - Map.clear() 与新 map : Which one will be better?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6757868/