每日一题:对比Hashtable、HashMap、TreeMap有什么不同❓

1)Hashtable🧡

  • 是一个古老的实现,随 Java 1.0 引入。
  • 它是同步的,这意味着它是线程安全的,但这也意味着它通常比非同步的实现(如 HashMap )慢。
  • 不允许使用 null 键或 null 值。
  • 是一个基于散列表的 Map 实现。

2)HashMap💡

  • 是 Java 1.2引入的,作为 Hashtable 的一个更先进的替代品。
  • 它是非同步的,这意味着它不是线程安全的,但其性能在单线程环境下通常比 Hashtable 好。
  • 允许一个 null 键和多个 null 值。
  • 同样是基于散列的 Map 实现,但提供更快的迭代。

3)TreeMap🔍

  • 基于红黑树( Red-Black tree )的 NavigableMap 实现。
  • 按照键的自然顺序或创建时提供的 Comparator 进行排序,因此它除了作为 Map 外,还可以用作双端队列。
  • 不是线程安全的。
  • 不允许 null 键(如果使用自然排序),但允许多个 null 值。
  • 提供了一些特殊的方法来处理键的有序性,如 firstKey(), lastKey(), headMap(), tailMap() 等。

加深记忆🌈

1)Hashtable🚆:可以比喻为一辆老式火车,它的运行是非常稳定和可靠的,因为它采用了同步措施,确保了每一个操作都是安全的。不过,正因为其老旧和同步的特性,它在速度和效率上不如现代化的交通工具,特别是在需要快速发展的现代应用场景中。

2)HashMap🚗:则可以看作是一辆私家车,它在日常使用中提供了极大的便利性和效率。私家车不需要像火车一样严格的时刻表和运行轨迹,你可以随意驾驶到任何地方,就像 HashMap 允许用户灵活地存取数据。但是,如果没有适当的同步机制,在并发环境中使用私家车( HashMap )可能会导致数据的不一致,就像多个司机试图同时驾驶同一辆车可能会引起混乱一样。

3)TreeMap🚌:可以想象成是一辆按照预定路线运行的观光巴士,这辆巴士按照固定的路径和时刻表运行,确保旅客可以按照既定的顺序访问各个景点。这就像 TreeMap 保持键值对按照特定的顺序(通常是自然排序)排列一样。虽然这种有序性在寻找和遍历数据时非常有用,但是因为需要维护这个顺序,它在数据插入和删除时可能比 HashMap 这样的私家车更慢一些。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值