You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么Java集合框架的LinkedHashMap没有同HashMap、TreeMap类似的put方法?

技术解答

该疑问属于对Java集合框架设计和继承机制的常见误解,LinkedHashMap本身完全支持和HashMap、TreeMap完全一致的put方法,不存在功能缺失,具体说明如下:

  • put是java.util.Map接口定义的核心通用方法,所有符合规范的Map实现类都必须支持该操作
  • LinkedHashMap是HashMap的直接子类,它直接继承了HashMap的put方法实现,不需要单独重复定义相同的方法签名;仅在内部重写了put逻辑调用的钩子方法afterNodeAccess、afterNodeInsertion,用来实现插入顺序/访问顺序保持的特有特性
  • 你提供的示例代码本身可以正常运行,运行结果会输出{5=6},验证了put方法的可用性:
LinkedHashMap<Integer,Integer> set=new LinkedHashMap<>();
set.put(5,6);
System.out.println(set);

所谓「put方法应当定义在LinkedHashMap的接口中」的表述存在两处错误:第一,LinkedHashMap是类不是接口;第二,它的父类HashMap已经实现了Map接口要求的put方法,子类不需要重复定义完全相同的公共方法签名即可直接调用。

很多开发者之所以会产生该疑问,多是因为查看LinkedHashMap源码时没有找到单独声明的put方法,这是面向对象继承机制的常规实现,通用公共方法放在父类中统一实现,子类直接复用即可,不需要冗余定义。


内容的提问来源于stack exchange,提问作者Tushar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 13:45:04