use*_*818 2 java null class map clear
码:
public class MyClass {
private Map<Integer,String> myMap=new HashMap<Integer, String>();
...........................
void methodFillMap(){
myMap.put(.....);
.....................
}
}
Run Code Online (Sandbox Code Playgroud)
什么是正确的:
void methodFillMap(){
myMap.clear();
myMap.put(.....);
.....................
}
Run Code Online (Sandbox Code Playgroud)
要么
void methodFillMap(){
myMap=null;
myMap.put(.....);
.....................
Run Code Online (Sandbox Code Playgroud)
} 或更好
void methodFillMap(){
myMap=new HashMap<Integer, String>();
myMap.put(.....);
.....................
}
Run Code Online (Sandbox Code Playgroud)
void methodFillMap(){myMap = null; myMap.put(.....);
将简单地抛出NullPointerException.
要清除地图,您应该使用myMap.clear().
顺便说一下,重新映射地图和使用clear之间有两点不同:
-clear不会调整地图的大小.如果HashMap包含n个桶,则在清除之后它仍将包含n个空桶,并且会产生性能影响(正面或负面,具体取决于您对地图的使用情况)
- 如果您使用clear,则不会丢弃该对象,因此如果发生这种情况,它将无法通过下一个GC进行管理,对GC时间产生影响(正面).