首页 新闻 会员 周边

用Map与HashMap创建对象的区别

0
[已解决问题] 解决于 2017-07-14 15:12

Map map = new HashMap();

HashMap map = new HashMap();

这两种方法创建出来的map有什么区别,优缺点是什么

map
江湖小白的主页 江湖小白 | 初学一级 | 园豆:179
提问于:2017-07-14 14:22
< >
分享
最佳答案
0

没有Hash这个对象吧。

 

奖励园豆:5
苍枫露雨 | 小虾三级 |园豆:1027 | 2017-07-14 14:29

写错了...

江湖小白 | 园豆:179 (初学一级) | 2017-07-14 14:31

@江湖小白: 

 

Map是一个interface, HashMap是一个class 是Map的一个实现,

Map能做的HashMap都能做,

HashMap能做的Map不一定能做,

但是由于实现(new)都是用的HashMap,所以在堆内存中的对象是一样的,只是引用类型不同,占用的空间都是一样的,而且由于多态特性,虽然引用是map, 但调用的方法是hashmap的

那为什么要用map不用hashmap呢?主要面向接口编程的思想,

举个栗子:

现在你使用的HashMap map = new HashMap();

后面你又定义了一个Map<String, HashMap> mapmap = new HashMap();  map.put("1", map);

后来老板说要线程安全,你只能将HashMap改为ConcurrentHashMap, 后面的mapmap也要 改为 Map<String, ConcurrentHashMap>, 

但如果你一开始就是用的map就么有这些烦恼了,只需要将map改为 Map map = new ConcurrentHashMap()即可

苍枫露雨 | 园豆:1027 (小虾三级) | 2017-07-14 15:08

@苍枫露雨: thank you!

江湖小白 | 园豆:179 (初学一级) | 2017-07-14 15:12
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册