扫码关注官方订阅号
Map<String,String> map =null; map=new HashMap<String,String>();
Map<String,String> map = new HashMap<String,String>();
两者有何区别?具体用在什么样的场景?
ringa_lee
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根据需要使用在不同的场景
没有区别,只是在满足某些逻辑的时候有可能会这样处理,例如如果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 是你逻辑上的一种可以作为 判断逻辑怎么走的一种条件 的时候, 可以这么分开写.
没有区别,无非第二个是在创建时直接初始化了而已。
这个在idea等有些编辑器上会有提示=null是多余的没有用,如果你的返回值是这个 可以根据不同的条件去获取不同的hashmap,这时候需要在方法开始的时候声明一个局部变量,这样就可以在返回值直接返回这个map
如果你要把map的初始化放到try里面,并且finally的时候要对map做别的处理,那就需要在try外面 定义map让他等于 null
没区别,无非是一个一行代码,一个两行代码。 如果你的两行代码中间夹杂了别的代码的话那就值得好好说说了。
然而并没有什么区别。。。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
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根据需要使用在不同的场景
没有区别,只是在满足某些逻辑的时候有可能会这样处理,例如如果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 是你逻辑上的一种可以作为 判断逻辑怎么走的一种条件 的时候, 可以这么分开写.
没有区别,无非第二个是在创建时直接初始化了而已。
这个在idea等有些编辑器上会有提示=null是多余的没有用,如果你的返回值是这个 可以根据不同的条件去获取不同的hashmap,这时候需要在方法开始的时候声明一个局部变量,这样就可以在返回值直接返回这个map
如果你要把map的初始化放到try里面,并且finally的时候要对map做别的处理,那就需要在try外面 定义map让他等于 null
没区别,无非是一个一行代码,一个两行代码。
如果你的两行代码中间夹杂了别的代码的话那就值得好好说说了。
然而并没有什么区别。。。