为了账号安全,请及时绑定邮箱和手机立即绑定

请各位大佬指点!请问以下这两种方式有什么具体的区别?

请各位大佬指点!请问以下这两种方式有什么具体的区别?

互换的青春 2019-08-17 10:24:37
请问这两种实现方式有什么具体的区别?2.HashMapmap1=newHashMap();Mapmap2=newHashMap();3.上面的map1和map2的实现具体有什么区别吗?
查看完整描述

2 回答

?
临摹微笑

TA贡献1982条经验 获得超2个赞

newHashMap()语句是创建泛型类HashMap的一个实例,map1和map2是引用,它们的类型不同,但它们都指向HashMap实例。
引用map1的类型就是HashMap泛型类,这没什么好说的。
引用map2的类型是Map泛型接口,HashMap泛型类实现了Map泛型接口,所以Map泛型接口类型的引用可以指向HashMap实例。
二者指向的实例类型是一样的,但因为map1和map2类型不一样,所以可以调用的方法不一样,map1可以调用HashMap的所有方法,包括Map的所有方法,但map2只能调用Map的方法,不能调用其他HashMap方法,虽然它指向的是一个HashMap对象。
                            
查看完整回答
反对 回复 2019-08-17
?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

题主想问的是声明变量mp1是HashMap类型,和map2的Map类型之间的区别吗?
还是建议楼主买本书,或者找个教程看看,这类问题过于基础,还是应该首先自己解决。
等号前面的是变量声明,就是说这个变量应该是什么类型的变量,等号右边是变量具体的实例,也就是实际上这个变量是什么东西。
对于题主的问题map1和map2实际上都是HashMap的实例,所以没有区别。但是在声明变量的时候一个是Map,一个是HashMap
Map是接口类,什么是接口类,请百度。HashMap是接口Map的具体实现类。
Map还有其他的实现类,比如:HashTable,ConcurrentHashMap等等..
map1和map2有什么区别?map2=newHashTable(),mp2=newConcurrentHashMap()都是对的。map1则只能是map1=newHashMap();因为map1声明的变量类型是HashMap;而Map相当于是HashMap,HashTable,ConcurrentHashMap的父类,用父类声明,其具体的实例可以是其任意子类。
子类拥有接口父类的所有方法实现,但不同的子类有各自不同的实现方式,以应对不同的场景,各个具体实现区别请百度。
针对本题,两种声明方式,在使用上没有什么区别
                            
查看完整回答
反对 回复 2019-08-17
  • 2 回答
  • 0 关注
  • 221 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号