Map map = new HashMap();
HashMap map = new HashMap();
这两种方法创建出来的map有什么区别,优缺点是什么
没有Hash这个对象吧。
写错了...
@江湖小白:
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()即可
@苍枫露雨: thank you!