hashmap和hashtable区别是什么?有什么区别?

Posted Hello_java大师

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hashmap和hashtable区别是什么?有什么区别?相关的知识,希望对你有一定的参考价值。

在一些java面试的过程中,经常有人会遇到这个[java面试题]hashmap和hashtable区别是什么,下面一起来看看这个面试题的答案吧。

一、hashmap和hashtable区别

具体来说的话hashmap和hashtable一共有7个方面的不同,下面一一来介绍一下。

1、hash值不同

HashTable:直接使用对象的hashCode

HashMap:重新计算hash值

2、两个遍历方式的内部实现不同

Hashtable、HashMap两者都是使用了Iterator,但是,因为一些历史原因,Hashtable除了使用了Iterator之外,还使用了Enumeration。

3、是否提供contains方法

Hashtable:Hashtable和HashMap不同,它保留了contains、containsValue以及containsKey3个方法

HashMap:它去掉了Hashtable的contains方法,改为了containsKey和containsValue

4、内部实现使用的数组初始化和扩容方式不同

HashTable:在不指定容量的情况下的默认容量为11;不要求底层数组的容量一定要为2的整数次幂;扩容时将容量变为原来的2倍加1。在此我向大家推荐一个架构学习交流圈。交流学习指导伪鑫:1253431195(里面有大量的面试题及答案)里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

HashMap:在不指定容量的情况下的默认容量为16;要求一定为2的整数次幂;扩容时,将容量变为原来的2倍

HashTable中hash数组默认大小是11,增加的方式是old*2+1

5、key和value是否允许null值

Hashtable:key和value都不允许出现null值

HashMap:null能够作为键,这样的键只有一个,能够有一个或者是多个键所对应的值为null

6、线程安全性不同

Hashtable:Synchronize;在多线程并发的情况下,能够直接使用Hashtable,不要自己为它的方法实现同步

HashMap:在缺省情况下是非Synchronize的;使用HashMap的时候就需要自己增加同步处理;HashMap是线程不安全的

7、继承的父类不同

Hashtable:继承Dictionary类

HashMap:继承AbstractMap类

以上就是对于hashmap和hashtable区别的介绍了!你都了解了吗?

想了解更多的java知识性回答吗?更多相关内容,可以继续关注本站的[常见问题]专栏进行了解。

以上是关于hashmap和hashtable区别是什么?有什么区别?的主要内容,如果未能解决你的问题,请参考以下文章

HashMap和Hashtable有什么区别?

HashMap 和 Hashtable 有什么区别?

HashMap 和 Hashtable 有什么区别?

021 HashMap 和 Hashtable 有什么区别?

HashMap和Hashtable的区别

HashMap 和 Hashtable 的 6 个区别