我想在 HashSet 中处理一些新数据,而不需要任何旧数据或旧 HashSet 对象。旧的 HashSet 对象不在其他地方引用。
是简单地hashset = new HashSet<String>()
让 JVM 释放旧 HashSet 对象的内存更好,还是应该调用hashSet.clear()
并重用相同的 HashSet?
根据 openJDK, hashSet.clear() 是:
public void clear() {
map.clear();
}
和 map.clear() :
public void clear() {
modCount++;
Entry[] tab = table;
for (int i = 0; i < tab.length; i++)
tab[i] = null;
size = 0;
}
既然map.clear()会迭代所有的entry,那么hashSet很大的时候会不会很耗时?在这种情况下推荐哪一个,构造方法还是 clear() 方法?