高级JAVA面试题详解(一)——CurrentHashMap、HashMap、HashTable的区别

本文深入探讨了HashMap、HashTable和CurrentHashMap的区别。HashMap在JDK1.8后引入红黑树以优化性能,而HashTable是线程安全但效率较低的选择。CurrentHashMap则采用分段锁实现高效并发。文章还详细阐述了HashMap的put()方法流程、哈希值计算方式以及如何确保对象适合作为Key。此外,还提到了线程安全的HashMap实现方式和有序Map的解决方案。
摘要由CSDN通过智能技术生成

这次疫情让几个关系很好的前同事都跳槽了,基本都面了大厂 阿里系、腾讯系、华为、平安等也都拿到了各自满意的offer,居安思危的我将他们经历的面试题收集整理然后根据自身情况解答复习。每周最少两大题(包含扩展问题)分享出来,大家一起学习。

CurrentHashMap、HashMap、HashTable的区别

大方向区别为:
HashMap 线程不安全的 ,HashTable 线程安全的任一时间只有一个线程能写Hashtable,CurrentHashMap线程安全的,引入分段锁。

HashMap 详解

HashMap 结构
  • JDK1.8以前 数组+单向链表
  • JDK1.8以后 数组+单向链表+红黑树
为什么要用红黑树

即使负载因子和Hash算法设计的再合理,也免不了会出现拉链过长的情况,一旦出现拉链过长,则会严重影响HashMap的性能。于是,在JDK1.8版本中,对数据结构做了进一步的优化,引入了红黑树。而当链表长度太长(默认超过8)时,链表就转换为红黑树,利用红黑树快速增删改查的特点提高HashMap的性能,长度小于6时红黑树转为链表。

课外习题:红黑树是啥?
红黑树是一个平衡二叉树
通过旋转和变色来保持平衡,拥有如下特性

  • 每个节点要么是黑色,要么是红色。
  • 根节点是黑色。
  • 每个叶子节点(NIL)
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值