映射清除vs null

Cot*_*nyo 12 java hashmap map

我有一张地图用于存储动态数据,这些数据一旦被创建就被丢弃(即使用;它们被快速消耗).它响应用户交互,因为当用户点击按钮时,地图被填充,然后数据用于做一些工作,然后不再需要地图.

所以我的问题是什么是更好的清空地图的方法?我应该每次都设置为null还是应该打电话clear()?我知道清楚是线性的.但我不知道如何将这个成本与每次创建地图的成本进行比较.地图的大小不是恒定的,因为它可能在创作之间从n到3n元素运行.

das*_*ght 8

如果没有从其他可能难以设置新对象的对象引用地图,那么简单地null从旧地图开始并从头开始可能比调用a更轻clear(),因为不需要进行线性时间清理.由于现代系统上的垃圾收集成本很小,因此很有可能以这种方式节省一些CPU周期.您可以通过指定初始容量来避免多次调整地图大小.

clear()首选的一种情况是在系统中的多个对象之间共享地图对象时.例如,如果您创建一个地图,将其分配给多个对象,然后在其中保留一些共享信息,则在所有这些对象中将地图设置为新地图可能需要保留对具有地图的对象的引用.在这样的情况下,更容易继续调用clear()相同的共享地图对象.