Java 中 Hashtable 、HashMap 、TreeMap 有什么不同?

本文详细对比了Java中的Hashtable、HashMap和TreeMap的区别。HashMap是非同步的,性能优秀,适用于大多数场景;TreeMap基于红黑树,提供有序访问;而Hashtable是同步的,不推荐使用。文章还探讨了HashMap的内部结构、树化原因以及LinkedHashMap的有序保证机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java 中 Hashtable 、HashMap 、TreeMap 有什么不同?

  • HashTable 最早期的 Java 类库提供的一个 Hash表实现,本身是同步的不支持 null 键和值,对同步有导致性能开销,很少被推荐使用。
  • HashMap 是应该更加广泛的哈希表实现,行为上与 hashtable 一致,主要区别是 Hashmap 不是同步的支持null 建和值。 HashMap 进行 put 或者 get 操作,可以达到常熟时间的性能,所以绝大多数场景都使用 HashMap。
  • TreeMap 则是基于红黑树提供的顺序访问的。与HashMap不同,它的get put remove之类的操作都是 O(log(N))的时间复杂度,具体顺序可以通过的 Comparator 或者根据键的自然顺序来判断。

Map 整体结构

Hashtable 是扩展了 Dictonary 类,类结构上与 HashMap 之类不同,HashMap 继承的是 abstractMap

HashMap 等其他 Map 都是扩展了 AbstractMap ,里面包含了通用方法抽象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wangxiaoming

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值