黑马程序员技术交流社区

标题: map小问题 [打印本页]

作者: 凝聚    时间: 2013-10-8 08:47
标题: map小问题
本帖最后由 凝聚 于 2013-10-8 14:20 编辑

HashMap<String,String> m=new HashMap<String,String>();
Map<String,String> m=new HashMap<String,String>();
请问这两句代码有什么区别啊?


作者: 狼人→浪人    时间: 2013-10-8 09:10
本帖最后由 狼人→浪人 于 2013-10-8 09:22 编辑

Map:将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。

HashMap:基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了非同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。

HashMap是Map的实现类,Map是接口不支持new Map()新建对象,而HashMap实现了Map中的抽象方法。那么实现类肯定是可以new HashMap()出对象的。

接口的最主要的作用是达到统一访问,就是在创建对象的时候用接口创建。
【接口名】 【对象名】=new 【实现接口的类】,这样你想用哪个类的对象就可以new哪个对象,
统一访问,因为你实现这个接口的类的方法名相同,但是实现内容不同我用接口来定义对象不就可以做到统一访问了吗?
接口主要针对多个类实现它来说的,要是只有一个类当然可以不用接口了。

作者: murder_fol    时间: 2013-10-8 09:40
第二个是多态的应用,将父类接口的变量指向子类的对象,这样在运行的时候才动态的确定调用了哪个子类的函数,有较好的灵活性
作者: 奋斗@zbt    时间: 2013-10-8 09:46
这个一般情况下都是用接口来声明的,第一句没有问题,是实现一个类,第二句是在前面使用接口来创建的,
Map<String,String> m=new HashMap<String,String>(); 这样的写法就是你可以随时修改这个具体的实现,这种写法比较省资源。

作者: a283398689    时间: 2013-10-8 11:06
我来回答,.~ 第2句跟灵活,~    第一句都锁定死呢,  第2句是用多态,  父类下面可以用很多子类




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2