乐鱼电竞

    教育行业A股IPO第一股(股票代码 003032)

    全国咨询/投诉热线:400-618-4000

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

    更新时间:2020年09月29日10时24分 来源:乐鱼播客 浏览次数:

    (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高级软件工程师课程 

    0 分享到:
    和我们在线交谈!
    【网站地图】【sitemap】