前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >每天5道Java面试题(第9天)

每天5道Java面试题(第9天)

作者头像
用户10787181
发布2023-11-12 08:32:39
1320
发布2023-11-12 08:32:39
举报
文章被收录于专栏:小龙学编程
1. HashMap 和 Hashtable 有什么区别?

存储:HashMap 允许 key 和 value 为 null,而 Hashtable 不允许。

线程安全:Hashtable 是线程安全的,而 HashMap 是非线程安全的。

推荐使用:在

2. 如何决定使用HashMap还是TreeMap?

对于在Map中插入、删除、定位一个元素这类操作,HashMap 是最好的选择,因为相对而言 HashMap 的插入会更快,但如果你要对一个 key 集合进行有序的遍历,那 TreeMap 是更好的选择。

3. 说一下HashMap的实现原理?

HashMap 基于 Hash 算法实现的,我们通过 put(key,value)存储,get(key)来获取。当传入 key 时,HashMap 会根据 key. hashCode() 计算出 hash 值,根据 hash 值将 value 保存在 bucket(桶)里。当计算出的 hash 值相同时,我们称之为 hash 冲突,HashMap 的做法是用链表和红黑树存储相同 hash 值的 value。Java1.8对HashMap做了改进,在链表长度大于8的时候,将后面的数据存在红黑树中,以加快检索速度。后续如果由于删除或者其他原因调整了大小,当红黑树的节点小于或等于

4. 为什么1.8后hashMap要用链表+红黑树的组合呢?

当这个链表过长了,查找这个链表上的元素的时候自然会变慢,所以链表如果过长了会影响到HashMap的性能。

所以在java1.8中,当链表过长时,会将该链表自动转为红黑树,红黑树是一个自平衡二叉树,能够优化查找的性能。

5. 在hashMap中链表什么情况下才会变成红黑树?

把链表转为红黑树、还是选择扩容,看这几个阀值:

①,当链表的长度 大于8,并且entry数组的长度大于64时,才会将链表转为红黑树。

②,当链表的长度小于 6,但是entry数组的长度小于64时,不转为红黑树,而是调用resize方法进行扩容;

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-11-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. HashMap 和 Hashtable 有什么区别?
  • 2. 如何决定使用HashMap还是TreeMap?
  • 3. 说一下HashMap的实现原理?
  • 4. 为什么1.8后hashMap要用链表+红黑树的组合呢?
  • 5. 在hashMap中链表什么情况下才会变成红黑树?
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档