在线客服
扫描二维码
下载博学谷APP扫描二维码
关注博学谷微信公众号
Java基础HashMap、HashSet、HashTable的区别是什么?HashMap、HashSet、HashTable的区别:继承的父类不同、线程安全性不同、是否提供 contains 方法、**key 和 value 是否允许 null 值 、哈希值的计算方法不同、内部实现使用的数组初始化和扩容方式不同。
区别一:继承的父类不同
Hashtable 继承自 Dictionary 类,而 HashMap 继承自AbstractMap 类。但二者都实现了 Map 接口。
区别二:线程安全性不同
Hashtable 中的方法是 Synchronize 的,而 HashMap 中的方法在缺省情况下是非 Synchronize 的。
区别三:是否提供 contains 方法
HashMap 把 Hashtable 的 contains 方法去掉了,改成containsValue 和 containsKey,因为 contains 方法容易让人引起误解。
Hashtable 则保留了 contains,containsValue 和 containsKey三个方法,其中 contains 和 containsValue 功能相同。
区别四:**key 和 value 是否允许 null 值 (面试比较喜欢问)
其中 key 和 value 都是对象,并且不能包含重复 key,但可以包含重复的 value。
Hashtable 中,key 和 value 都不允许出现 null 值。
HashMap 中,null 可以作为键,这样的键只有一个;可以有一个或多个键所对应的值为 null。当 get()方法返回 null值时,可能是 HashMap 中没有该键,也可能使该键所对应的值为 null。因此,在 HashMap 中不能由 get()方法来判断 HashMap 中是否存在某个键, 而应该用 containsKey()方法来判断。
区别五:哈希值的计算方法不同
Hashtable 直接使用的是对象的 hashCode,而 HashMap 则是在对象的 hashCode 的基础上还进行了一些变化。
区别六:内部实现使用的数组初始化和扩容方式不同
内存初始大小不同,HashTable 初始大小是 11,而 HashMap 初始大小是 16
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
Java虚拟机之JVM如何调优
JVM的引入,使Java语言可以在不同平台上运行时不需要重新编译。但是程序上线前的测试或者运营的过程中,会出现各种关于JVM的问题。例CPU load过高、请求延迟、tps降低,甚至出现内存泄漏,内容一处导致系统崩溃等等问题。因此需要对JVM进行调优,促使程序正常运行的前提下获得更高的用户体验和运行效率。
6584
2019-06-28 18:29:21
Java基础语法之注解学习笔记
在学习Java基础语法的时候,初学者常常会分不清注解与注释的区别。其实注解和注释是完全不一样的两个概念。简单来讲,注释就是方便自己或他人阅读代码,对编程思路或程序作用的解释说明。而注解则是代码里的特殊标记,是给编译器阅读的元数据。本文将为大家详细讲解一下Java基础语法中有关注解的相关知识点,需要学习的小伙伴可以跟着文章一起来梳理一遍知识点。
3698
2020-01-06 16:53:17
Java编程语言基础知识进阶学习路线及目标
Java编程语言基础知识进阶学习内容及学习目标,此阶段学习具备JavaSE基本开发技巧,可胜任简单单机应用程序。对企业JavaWeb开发深入了解,为JavaWeb学习提供基础。Java编程语言基础主要学习Git工具、面向对象、常用API、、异常、集合、IO、多线程、网络编程、Lambda、反射等知识。
3877
2020-04-16 16:04:12
Redis安装与部署新手入门教程
对于绝大多数初学者来说,安装Redis都是一个难关。这篇文章主要是分享一下如何在Linux中安装Redis服务。那么下面一起看看Redis安装与部署新手入门教程吧~
3391
2020-07-16 16:03:00
Spring AOP应用场景有哪些?Aop工作原理分析
Aop工作原理分析,面向切面编程,是通过代理的方式为程序添加统一功能,集中解决一些公共问题。应用在Debugging 调试、logging, tracing, profiling and monitoring 记录跟踪优化校准场景中。
7853
2020-09-02 11:08:42