阿里内推面经1:HashMap和Hashtable区别总结
需积分: 0 22 浏览量
更新于2023-12-13
收藏 320KB DOCX 举报
2019年阿里内推面经中包含了关于哈希表的一些问题和注意事项。在面试中,一些内容可能包括了一些数据结构和Java集合框架中的知识。其中包括了Hashtable和HashMap的比较,以及它们在多线程环境下的使用情况。Hashtable是一个线程安全的Map实现,基于synchronized实现,而HashMap是线程不安全的实现。因此,当多条线程访问同一个Map对象时,使用Hashtable实现类会更好,考虑到线程安全的需求。此外,Hashtable不允许使用null作为key和value,如果试图把null放进Hashtable中,将会引发NullPointerException异常;但HashMap可以使用null作为key和value。此外,Hashtable和HashMap在默认大小和扩容方式上也有所不同,Hashtable默认大小为11,按照2倍1的方式扩容;而HashMap默认大小为16,按照2倍方式扩容。最后,Hashtable通过一次hash计算出key的hash值,然后与表长取模,得到对象的散列位置,而HashMap通过两次hash计算得到散列位置。 综上所述,Hashtable是线程安全的,不允许使用null作为key和value,而HashMap是线程非安全的,可以使用null作为key和value。Hashtable的默认大小为11,按照2倍1的方式扩容,而HashMap的默认大小为16,按照2倍方式扩容。同时,Hashtable和HashMap使用的散列计算方式也有差异。 在Java的集合框架中,对于选择使用哪种类型的Map实现类,需要根据具体场景和需求进行权衡和选择。当涉及到多线程的情况时,可以考虑使用Hashtable以确保线程安全;而在性能方面,HashMap更具优势。此外,在存储数据时,需要注意Hashtable不允许使用null作为key和value,而HashMap可以。同样,对于Hashtable和HashMap的默认大小和扩容方式也需要进行考虑,以便进行合理的使用和优化。总之,在面试和实际开发中,对于HashMap和Hashtable的区别和使用方法的理解与把握,都是具有重要意义的。
2022-08-08 上传
2023-08-16 上传
2016-07-16 上传
2021-02-02 上传
2022-08-08 上传
2022-08-03 上传
UEgood雪姐姐
- 粉丝: 43
- 资源: 319
最新资源
- 前端协作项目:发布猜图游戏功能与待修复事项
- Spring框架REST服务开发实践指南
- ALU课设实现基础与高级运算功能
- 深入了解STK:C++音频信号处理综合工具套件
- 华中科技大学电信学院软件无线电实验资料汇总
- CGSN数据解析与集成验证工具集:Python和Shell脚本
- Java实现的远程视频会议系统开发教程
- Change-OEM: 用Java修改Windows OEM信息与Logo
- cmnd:文本到远程API的桥接平台开发
- 解决BIOS刷写错误28:PRR.exe的应用与效果
- 深度学习对抗攻击库:adversarial_robustness_toolbox 1.10.0
- Win7系统CP2102驱动下载与安装指南
- 深入理解Java中的函数式编程技巧
- GY-906 MLX90614ESF传感器模块温度采集应用资料
- Adversarial Robustness Toolbox 1.15.1 工具包安装教程
- GNU Radio的供应商中立SDR开发包:gr-sdr介绍