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没有这样的机制。

相关推荐
是乐谷7 分钟前
阿里云杭州 AI 产品法务岗位信息分享(2025 年 8 月)
java·人工智能·阿里云·面试·职场和发展·机器人·云计算
Java水解25 分钟前
Java中的四种引用类型详解:强引用、软引用、弱引用和虚引用
java·后端
lifallen33 分钟前
JCTools 无锁并发队列基础:ConcurrentCircularArrayQueue
java·开发语言·数据结构·算法
一叶飘零_sweeeet41 分钟前
IDEA 插件 Trae AI 全攻略
java·人工智能·intellij-idea
欧哈东哥1 小时前
【C++】标准库中用于组合多个值的数据结构pair、tuple、array...
java·数据结构·c++
python_1361 小时前
web请求和响应
java·spring·github
ciku3 小时前
Spring AI Starter和文档解读
java·人工智能·spring
程序猿阿越3 小时前
Kafka源码(三)发送消息-客户端
java·后端·源码阅读