HashMap既然继承了AbstractMap为什么还要实现Map

简介:       细心的人可能对HashMap类的定义有疑问,JDK源码中是这样定义的: public class HashMap extends AbstractMap implements...

      细心的人可能对HashMap类的定义有疑问,JDK源码中是这样定义的:

public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable

      AbstractMap已经实现了Map接口,HashMap继承了AbstractMap,为什么还要实现Map接口呢?

       网络上有些细心的人对这样的写法有疑问,解答者大部分都站在了java一边,认为JDK这样写,肯定有他的道理。但是真正的原因,又很难找到。

      其实据java集合框架的创始人Josh Bloch描述,这样的写法是一个失误。在java集合框架中,类似这样的写法很多。stack overflow上面也进行过提问,而且找到了真正的答案,答案出处

       从这个问题我们可以看到,Josh Bloch承认这是一个失误,最开始写java集合框架的时候,他认为这样写,在某些地方可能是有价值的,直到他意识到错了。显然的,JDK的维护者,后来不认为这个小小的失误值得去修改。所以就这样存在下来了。

目录
相关文章
|
9月前
|
存储 缓存 安全
Java集合框架(Map篇)
在这个示例代码中,首先定义了一个数组和一个集合,并使用Arrays.asList()方法将数组转换成集合。接着对数组和集合分别进行排序,使用binarySearch()方法查找元素位置,使用copyOf()和copy()方法复制数组和集合,最后输出结果。可以看到,Arrays和Collections提供的方法可以方便地对数组和集合进行操作,节省开发者的时间和精力。
|
17天前
|
机器学习/深度学习
HashMap中tableSizeFor()方法详解
HashMap中tableSizeFor()方法详解
HashMap中tableSizeFor()方法详解
|
17天前
|
存储 容器
Hashmap1.7和1.8区别
Hashmap1.7和1.8区别
73 0
Hashmap1.7和1.8区别
|
9月前
|
存储 Java
Java集合Map
Java集合Map
27 0
|
10月前
|
Java
Java 中Map接口及其实现子类HashMap,Hashtable,Properties,TreeMap类的详解(二)
Java 中Map接口及其实现子类HashMap,Hashtable,Properties,TreeMap类的详解
28 0
|
10月前
|
Java
Java 中Map接口及其实现子类HashMap,Hashtable,Properties,TreeMap类的详解(一)
Java 中Map接口及其实现子类HashMap,Hashtable,Properties,TreeMap类的详解
41 0
|
10月前
|
Java
Java集合框架Map接口
Java集合框架中的Map接口表示一种键值对(key-value)的数据结构,其中每个元素都包含一个唯一的键和对应的值。在Map中,每个键必须是唯一的,而值可以重复。Map接口提供了一些方法来实现基本的键值对操作,例如添加、查找、删除等。 Map接口的实现类可以根据其内部数据结构的不同,分为几种类型,例如HashMap、TreeMap和LinkedHashMap等。不同的实现类具有不同的特点和性能特征,应该根据实际需求来选择合适的实现类。 Map接口中常用的方法
49 0
|
12月前
|
存储 算法 Java
Java中的Map接口(实现类HashMap和LinkedHashMap)
Java中的Map接口(实现类HashMap和LinkedHashMap)
|
12月前
|
存储 Java
Java中的Set接口(实现类HashSet和HashSet子类LinkedHashSet)
Java中的Set接口(实现类HashSet和HashSet子类LinkedHashSet)
HashMap中套map的作用
HashMap中套map的作用
64 0