当前位置: 首页 > news >正文

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

http://www.dtcms.com/a/292163.html

相关文章:

  • 7.22 下雨天了怎么办~~~
  • Vue底层换成啥了?如何更新DOM的?
  • solidity从入门到精通 第二章:Solidity初相见
  • 高速AC耦合电容挨得很近,PCB串扰会不会很大……
  • vue2使用v-viewer实现自动预览
  • 能协调控制器的硬件与软件组成及解决方案
  • 网易视觉算法面试30问全景精解
  • 【node】npm包本地开发与调试
  • 【自动化运维神器Ansible】Ansible介绍与架构详解
  • Events
  • UE5 UI scaleBox 缩放框
  • 基于开源AI智能名片链动2+1模式与S2B2C商城小程序的淘宝新店引流与好评优化策略研究
  • 现在希望用git将本地文件crawler目录下的文件更新到远程仓库指定crawler目录下,命名相同的文件本地文件将其覆盖
  • Elastic Cloud 简化版:GCP Marketplace
  • 【LeetCode数据结构】栈和队列的应用——用队列实现栈问题、用栈实现队列问题详解
  • Leetcode力扣解题记录--第73题(矩阵置零)
  • ecflow服务的搭建,源码编译方式
  • Gerrit多仓库对应多邮箱配置办法
  • Stirling PDF本地PDF编辑器:cpolar内网穿透实验室第628个成功挑战
  • Apache Ignite 索引(Indexes)定义和使用
  • 【运维】SGLang服务器参数配置详解
  • Vue开发常用库(含npm安装命令)
  • IPv4枯竭时代:从NAT技术到IPv6的演进之路
  • C++函数 vs Go函数
  • C++ 中重载函数右值引用和左值引用匹配的优先级
  • 【机器学习】第四章 回归算法
  • 主流开源LLM架构对比与突破·
  • 控制器(Controller)模块的架构与工作流程 -OpenExo
  • Azure可靠性架构指南:构建云时代的高可用系统
  • Java函数指南:从Function到BiFunction的深度解析