Hashmap与Hashtable有什么区别?【Java面试题】

(1)问题分析

考官主要考核对于两个map的区别。

(2)核心答案讲解:

相同点:

HashMap和Hashtable都是存储“键值对(key-value)”的散列表,而且都是采用 拉链法实现的。

存储的思想都是:通过table数组存储,数组的每一个元素都是一个Entry;而 一个 Entry就是一个单向链表,Entry链表中的每一个节点就保存了key- value键值对数据。

不同点:

1) 继承和实现方式不同

2)线程安全不同

3)对null值的处理不同

4) 支持的遍历种类不同

5) 通过Iterator迭代器遍历时,遍历的顺序不同

6)容量的初始值 和 增加方式都不一样

7) 添加key-value时的hash值算法不同

(3)问题扩展

HashTable中hash数组默认大小是11,增加的方式是 old*2+1;HashMap中 hash数组的默认大小是16,而且一定是2的指数;

扩容的临界点是加载因子loadFactor>0.75,其中loadFactor=size/capaticy

(4)使用场景

在多线程中,我们可以自己对HashMap进行同步,也可以选择ConcurrentHashMap。当HashMap和Hashtable都不能满足自己的需求时,还可以考虑新定义一个类,继承或重新实现散列表;当然,一般情况下是不需要的了。

猜你喜欢

Java swing是做什么的?有什么作用?

什么是APM系统?APM的基本原理介绍

什么是动态代理?两种常用的动态代理方式 

Java高级软件工程师课程 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/253687.html

(0)
上一篇 2022年5月8日
下一篇 2022年5月8日

相关推荐

发表回复

登录后才能评论