【发布时间】:2013-08-29 11:28:56
【问题描述】:
我想在 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() 方法?
【问题讨论】:
-
hashSet = null; 怎么样?
-
@AniketThakur 好吧,事实上,我需要一个新的 hashSet。如果我之后要新建一个 hashSet,是否还需要将 hashSet 分配为 null?
-
@wings 否。不要将其设置为 null。如果您需要一个新的 HashSet,请创建一个。或者,可能更好的是使用不同的变量,因为新的 HashSet 可能会用于其他用途。