首页 > java HashMap

java HashMap

语言 java

Map<String,String> map =null;
map=new HashMap<String,String>();

Map<String,String> map = new HashMap<String,String>();

两者有何区别?具体用在什么样的场景?


没区别,无非是一个一行代码,一个两行代码。
如果你的两行代码中间夹杂了别的代码的话那就值得好好说说了。


这个在idea等有些编辑器上会有提示=null是多余的没有用,如果你的返回值是这个 可以根据不同的条件去获取不同的hashmap,这时候需要在方法开始的时候声明一个局部变量,这样就可以在返回值直接返回这个map


没有区别,只是在满足某些逻辑的时候有可能会这样处理,例如如果map是在一个for循环的外面的话


没有区别,无非第二个是在创建时直接初始化了而已。


没什么区别啊...
第一个map对象你在声明的时候让他直接指向null,然后又让他指向新创建的HashMap<String,String>类型的对象,第二个map对象你在声明的时候就直接创建了一个HashMap<String,String>类型的对象,并让map指向它。


当new HashMap<String,String>()的时候,同样分配内存地址给map。两者没区别。


然而并没有什么区别。。。


没什么具体的区别. 就只是创建对象的步骤分开还是一步完成了而已.
具体用在哪, 还是根据逻辑需要而已.
比如说
Map<String,String> map =null;
if(#&%$&%#@){
map=new HashMap<String,String>();
}
else{
sysout("#^%^$@#$$$");
}
if(map==null)
{// 逻辑..}
else{// 逻辑...}
这种..之类的情况下... 也就是说 map=null 是你逻辑上的一种可以作为 判断逻辑怎么走的一种条件 的时候, 可以这么分开写.


如果你要把map的初始化放到try里面,并且finally的时候要对map做别的处理,那就需要在try外面 定义map让他等于 null


Map<K,v> 是接口,HashMap<k,v>是实现类,Map可以有很多实现,都是Map,都要实现Map的方法,至于Map的内部需要怎么实现,是效率的考虑,HashMap就是其中一种效率比较高,使用频率比较高的Map,其他的Map还有AbstractMap, Attributes, AuthProvider, ConcurrentHashMap, ConcurrentSkipListMap, EnumMap, HashMap, Hashtable, IdentityHashMap, LinkedHashMap, PrinterStateReasons, Properties, Provider, RenderingHints, SimpleBindings, TabularDataSupport, TreeMap, UIDefaults, WeakHashMap根据需要使用在不同的场景

【热门文章】
【热门文章】