请问这两种实现方式有什么具体的区别?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对象。

吃鸡游戏
TA贡献1829条经验 获得超7个赞
题主想问的是声明变量mp1是HashMap类型,和map2的Map类型之间的区别吗?还是建议楼主买本书,或者找个教程看看,这类问题过于基础,还是应该首先自己解决。等号前面的是变量声明,就是说这个变量应该是什么类型的变量,等号右边是变量具体的实例,也就是实际上这个变量是什么东西。对于题主的问题map1和map2实际上都是HashMap的实例,所以没有区别。但是在声明变量的时候一个是Map,一个是HashMapMap是接口类,什么是接口类,请百度。HashMap是接口Map的具体实现类。Map还有其他的实现类,比如:HashTable,ConcurrentHashMap等等..map1和map2有什么区别?map2=newHashTable(),mp2=newConcurrentHashMap()都是对的。map1则只能是map1=newHashMap();因为map1声明的变量类型是HashMap;而Map相当于是HashMap,HashTable,ConcurrentHashMap的父类,用父类声明,其具体的实例可以是其任意子类。子类拥有接口父类的所有方法实现,但不同的子类有各自不同的实现方式,以应对不同的场景,各个具体实现区别请百度。针对本题,两种声明方式,在使用上没有什么区别
添加回答
举报
0/150
提交
取消