HashMap和Hashtable的区别

📚 欢迎来到我的Java八股文专栏! 🎉

各位程序员小伙伴们好呀~ 👋 我是雪碧聊技术,很高兴能在CSDN与大家相遇!✨

🚀 专栏介绍

这个专栏将专注于分享Java面试中的经典"八股文"知识点 💡,内容涵盖:

📌 Java基础核心概念

🧠 JVM原理与性能调优

🔄 多线程与并发编程

🏗️ 设计模式实战

🗃️ 常用框架源码解析

⚙️ 系统架构设计思想

🌟 为什么选择这个专栏?

🎯 精准定位:直击大厂Java面试高频考点

🧩 系统全面:从基础到进阶,构建完整知识体系

💎 实战导向:理论+代码示例,拒绝空谈

🔍 深度解析:不只是背诵,更要理解原理

🆕 持续更新:紧跟技术发展趋势

📖 学习建议

建议大家可以这样使用本专栏:

📅 每日一读:每天消化1-2个知识点

✍️ 动手实践:所有代码建议亲自敲一遍

🗂️ 分类整理:建立自己的知识脑图

🔄 定期复习:对抗遗忘曲线

💬 互动讨论:评论区欢迎交流探讨

🛠️ 工具推荐

学习过程中这些工具可能会帮到你:

🔧 IDEA:Java开发神器

📊 JProfiler:性能分析工具

🧪 JUnit:单元测试框架

📝 Markdown:笔记整理

🖇️ Git:版本控制

💌 致读者

技术之路道阻且长,但行则将至 ✊

在这个专栏中,我会:

✅ 用最通俗的语言解释复杂概念

✅ 提供可直接运行的代码示例

✅ 标注每个知识点的面试权重

✅ 分享实际项目中的经验教训

✅ 及时回复大家的疑问

🌈 最后寄语

"八股文"虽被诟病,但扎实的基础知识永远是程序员的立身之本 💪

希望这个专栏能成为你:

🎯 面试冲刺的利器

🏗️ 技术进阶的阶梯

🤝 结识同好的平台

让我们携手并进,在技术的星辰大海中扬帆远航! ⛵

记得⭐️收藏 ⭐️关注 ⭐️不迷路哦~ 😊

**1.**线程是否安全:HashMap是非线程安全的,Hashtable是线程安全的,因为Hashtable内部的方法基本都经过synchronized修饰。(如果你要保证线程安全的话就使用ConcurrentHashMap吧!);

**2.**效率:因为线程安全的问题,HashMap要比Hashtable效率高一点。另外,Hashtable基本被淘汰,不要在代码中使用它;对Nullkey和Nullvalue的支持:HashMap可以存储null的key和value,但null作为键只能有一个,null作为值可以有多个;Hashtable不允许有null键和null值,否则会抛出NullPointerException。

**3.**初始容量大小和每次扩充容量大小的不同:

①创建时如果不指定容量初始值,Hashtable默认的初始大小为11,之后每次扩充,容量变为原来的2n+1。

②HashMap默认的初始化大小为16。之后每次扩充,容量变为原来的2倍。

③创建时如果给定了容量初始值,那么Hashtable会直接使用你给定的大小,而HashMap会将其扩充为2的幂次方大小(HashMap中的tableSizeFor()方法保证,下面给出了源代码)。也就是说HashMap总是使用2的幂作为哈希表的大小,后面会介绍到为什么是2的幂次方。

**4.**底层数据结构:JDK1.8以后的HashMap在解决哈希冲突时有了较大的变化,当链表长度大于阈值(默认为8)(将链表转换成红黑树前会判断,如果当前数组的长度小于64,那么会选择先进行数组扩容,而不是转换为红黑树)时,将链表转化为红黑树,以减少搜索时间。Hashtable没有这样的机制。

相关推荐
LiRuiJie13 分钟前
深入剖析Spring Boot / Spring 应用中可自定义的扩展点
java·spring boot·spring
爬虫程序猿21 分钟前
利用 Java 爬虫获取淘宝商品 SKU 详细信息实战指南
java·开发语言·爬虫
茶本无香1 小时前
RequestContextFilter介绍
java·spring·filter·requestcontext
iナナ1 小时前
初识JVM
java·jvm
m0_570466411 小时前
代码随想录算法训练营第二十八天 | 买卖股票的最佳实际、跳跃游戏、K次取反后最大化的数组和
java·开发语言·算法
ST.J2 小时前
swing笔记
java·笔记
菩提树下的凡夫2 小时前
瑞芯微RV1126目标识别算法Yolov8的部署应用
java·算法·yolo
爱隐身的官人2 小时前
新后端漏洞(上)- Java RMI Registry反序列化漏洞
java·反序列化漏洞