java hashmap为什么要实现map接口

hashmap继承了AbstractMap,而AbstractMap实现了map接口,这相当于hashmap已经实现了map接口,可为什么hashmap还要去实现map接口???还是我的源码有错?图片说明

从源代码的角度来说,确实可以不需要,在stackoverflow上看到的一种解释是,为了java api的文档生成工具而优化,产生更精确的类型的文档。

java是基于接口调用的。假如说你换了treemap还有其他map,改动很容易。再往大的说。数据库jdbc查询,全部接口调用。换一个jar包,代码不用改。mysql的那一套立马可以用oracle。

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

因为Map接口中的行为,让HashMap实现用到的地方更多。PS:这些都是给我们程序员拿来用的,谁更好用就用谁