阿里内推面经1:HashMap和Hashtable区别总结
需积分: 0 158 浏览量
更新于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的区别和使用方法的理解与把握,都是具有重要意义的。
328 浏览量
2016-07-16 上传
237 浏览量
2022-08-08 上传
2022-08-03 上传
![](https://profile-avatar.csdnimg.cn/430a49bbf76d4c31bf5a4a6a949b999e_weixin_35772595.jpg!1)
UEgood雪姐姐
- 粉丝: 42
最新资源
- Java调用DLL方法详解:JNI与Jacob实战
- Microsoft的优质代码实践:编写无错C程序
- 正则表达式入门教程:掌握RegExp语法规则和用途
- 戴尔台式机报修指南:服务标签与故障诊断
- Dev-C++ 4.9.9.2 安装与基础操作指南
- Discuz! Rewrite规则全集:快速配置教程
- PDF制作指南:Adobe Acrobat 7.0 Professional打造电子书
- Java构造器与初始化清理
- SAP R/3全貌:90页中文详解与国内外成功与失败案例
- Oracle9i高级复制实施技巧与注意事项
- Java SCJP 1.4 认证考试题库:序列化和反序列化
- TreeView控件的高级用法:部门树结构与连锁选择
- ASP编程:Request与Response对象深度解析
- LoadRunner分析指南:理解与应用
- 深入理解EcmaScript:JavaScript与JScript之基础
- 《深入浅出MFC》2/e电子书开放下载