- 请问这两种实现方式有什么具体的区别?
2.HashMap<String, Object> map1 = new HashMap<String, Object>();
Map<String, Object> map2 = new HashMap<String, Object>();
3.上面的 map1 和 map2 的实现具体有什么区别吗?
2.HashMap<String, Object> map1 = new HashMap<String, Object>();
Map<String, Object> map2 = new HashMap<String, Object>();
3.上面的 map1 和 map2 的实现具体有什么区别吗?
题主想问的是 声明变量 mp1 是 HashMap 类型,和 map2 的 Map 类型之间的区别吗?
还是建议楼主买本书,或者找个教程看看,这类问题过于基础,还是应该首先自己解决。
等号前面的是变量声明,就是说这个变量应该是什么类型的变量,等号右边是变量具体的实例,也就是实际上这个变量是什么东西。
对于题主的问题 map1 和 map2 实际上都是 HashMap 的实例,所以没有区别。但是在声明变量的时候一个是 Map ,一个是 HashMap
Map 是接口类,什么是接口类,请百度。
HashMap 是 接口 Map 的具体实现类。
Map 还有其他的实现类,比如: HashTable, ConcurrentHashMap 等等..
map1 和 map2 有什么区别? map2 = new HashTable() , mp2 = new ConcurrentHashMap() 都是对的。map1 则只能是 map1 = new HashMap(); 因为 map1 声明的变量类型是 HashMap; 而 Map 相当于是 HashMap,HashTable,ConcurrentHashMap 的父类,用父类声明,其具体的实例可以是其任意子类。
子类拥有接口父类的所有方法实现,但不同的子类有各自不同的实现方式,以应对不同的场景,各个具体实现区别请百度。
针对本题,两种声明方式,在使用上没有什么区别
4 回答1.4k 阅读✓ 已解决
4 回答1.3k 阅读✓ 已解决
1 回答2.6k 阅读✓ 已解决
2 回答740 阅读✓ 已解决
2 回答1.7k 阅读
2 回答1.7k 阅读
2 回答1.3k 阅读
new HashMap<String, Object>()语句是创建泛型类HashMap的一个实例,map1和map2是引用,它们的类型不同,但它们都指向HashMap实例。
引用map1的类型就是HashMap泛型类,这没什么好说的。
引用map2的类型是Map泛型接口,HashMap泛型类实现了Map泛型接口,所以Map泛型接口类型的引用可以指向HashMap实例。
二者指向的实例类型是一样的,但因为map1和map2类型不一样,所以可以调用的方法不一样,map1可以调用HashMap的所有方法,包括Map的所有方法,但map2只能调用Map的方法,不能调用其他HashMap方法,虽然它指向的是一个HashMap对象。