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

相关推荐
水无痕simon6 分钟前
8 shiro的web整合
java
CodeCraft Studio14 分钟前
全球知名的Java Web开发平台Vaadin上线慧都网
java·开发语言·前端·vaadin·java开发框架·java全栈开发·java ui 框架
我是华为OD~HR~栗栗呀25 分钟前
前端面经-高级开发(华为od)
java·前端·后端·python·华为od·华为·面试
城管不管38 分钟前
Java EE、Java SE 和 Spring Boot
java·spring boot·java-ee
xdpcxq102939 分钟前
EF Core框架数据库连接管理
java·jvm·数据库
熙客41 分钟前
分布式ID解决方案
java·分布式·spring cloud·微服务
菜鸟小九1 小时前
SSM(MybatisPlus)
java·开发语言·spring boot·后端
不爱编程的小九九1 小时前
小九源码-springboot051-智能推荐旅游平台
java·spring boot·后端
期待のcode1 小时前
MyBatis框架—延迟加载与多级缓存
java·数据库·后端·缓存·mybatis
老华带你飞2 小时前
小区服务|基于Java+vue的小区服务管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·小区服务管理系统