`

hashMap和hashtable的区别深入解析

 
阅读更多

Hashtable和HashMap的区别:
1.Hashtable是Dictionary的子类,HashMap是Map接口的一个实现类;
2.Hashtable中的方法是同步的,而HashMap中的方法在缺省情况下是非同步的。即是说,在多线程应用程序中,不用专门的操作就安全地可以使用Hashtable了;而对于HashMap,则需要额外的同步机制。但HashMap的同步问题可通过Collections的一个静态方法得到解决:
Map Collections.synchronizedMap(Map m)
这个方法返回一个同步的Map,这个Map封装了底层的HashMap的所有方法,使得底层的HashMap即使是在多线程的环境中也是安全的。
3.在HashMap中,null可以作为键,这样的键只有一个;因为HashMap put在判断key值时,如果为null,则返回new object(),而hashtable抛出异常。当get(key)方法,key如果为null,则通过new object().hashcode()进行查询。返回null值时,即可以表示HashMap中没有该键,也可以表示该键所对应的值为null。 因此,在HashMap中不能由get()方法来判断HashMap中是否存在某个键,而应该用containsKey()方法来判断。
4.初始化过程,Hashtable的初始化为11.hashMap的初始化为16.同时有一个加载因子,0.75.初始化时,以容量*0.75进行初始化。如果超出这个数值,Hashtable是以 初始容量*2+1扩容。hashMap则以初始容量*2扩容。

5.put的方法时,Hashtable是取模运算,而hashMap是采用2的幂次方加上与达到取模运算的效果,提高了性能。

6.两者检测是否含有key时,hash算法不一致,HashMap内部需要将key的hash码重新计算一边再检测,而                    Hashtable则直接利用key本身的hash码来做验证。

分享到:
评论

相关推荐

    hashmap面试题_hashmap_

    4. HashMap与Hashtable的区别? 答:HashMap非线程安全,而Hashtable是线程安全的;HashMap允许null键值,Hashtable不允;HashMap迭代器在修改时不会抛出ConcurrentModificationException,而Hashtable会。 5. ...

    深入解读大厂java面试必考点之HashMap全套学习资料

    - HashMap和Hashtable的区别? - HashMap与HashSet的关系? - 如何解决哈希冲突? - 如何自定义键的哈希码生成方式? - 如何避免和处理HashMap中的循环链表? 通过深入学习和理解这些知识点,你将能够在面试中自信...

    hashmap 实例

    在本文中,我们将深入理解 HashMap 的实例及其工作原理,并与其他数据结构如 Vector、ArrayList、LinkedList 和 Hashtable 进行对比。 首先,我们来看 HashMap 的实例代码: ```java HashMap hashmap = new ...

    HashMap资料.zip

    9. **HashMap与HashTable的区别**:HashTable是早期的线程安全版本,但它不允许null键和值,且性能较低,已经被ConcurrentHashMap所取代。 10. **面试常见问题**:面试中常问的问题包括HashMap的扩容机制、哈希冲突...

    Java集合框架常见面试题解析:深入探讨List、Set、Map及其线程安全性

    最后,针对一些常见的面试问题进行了详细的解答,如 HashMap 和 Hashtable 的区别、ArrayList 和 LinkedList 的比较等。 适合人群:具备一定 Java 编程基础的研发人员,尤其是准备面试或希望深入了解 Java 集合框架...

    Java面试题3.docx

    1、**HashMap 和 Hashtable 的区别和联系** HashMap 和 Hashtable 都是Java中的键值对存储结构,它们底层都基于哈希表实现。主要差异在于: - **线程安全性**:Hashtable 是线程安全的,因为它的所有方法都使用了 ...

    深入探索Java集合框架:解密复杂的面试题和精准解析

    4. **HashMap和Hashtable的区别** - **HashMap** 非线程安全,允许null键和null值,适合单线程环境。 - **Hashtable** 线程安全,不允许null键和null值,适合多线程环境。 5. **ConcurrentHashMap和Hashtable的...

    深入剖析Java并发容器与算法: ConcurrentMap vs. HashTable及常用集合类解析 面试 面经 算法 数据结构

    内容概要:本文详细探讨了Java并发环境下的ConcurrentHashMap与HashTable的关键差异,介绍了LinkedHashMap、HashMap及其与Set类家族成员的异同,并分析了诸如Collections.sort等重要工具方法的工作机制。此外,文档...

    HashMap 源码分析

    然而,HashMap与HashTable的主要区别在于线程安全性:HashTable是线程安全的,而HashMap则不是。 JDK1.8之后,HashMap进行了性能优化,引入了红黑树的数据结构。当链表的长度超过一个阈值(默认为8)时,HashMap会...

    应聘Java笔试时可能出现问题及其答案

    这里我们根据提供的部分内容,深入解析一些常见的Java基础知识和面试重点。 首先,我们要了解Java中的访问修饰符,包括public、private、protected和默认(friendly)。它们分别决定了类、接口、变量和方法的可见性...

    面试准备1

    - HashMap与Hashtable的区别:HashMap是非线程安全的,而Hashtable是线程安全的;HashMap允许null键值对,但不推荐;HashMap的初始容量是16,而Hashtable是11;HashMap扩容是2倍,Hashtable是2倍+1;HashMap和...

    应聘Java笔试时可能出现问题及其答案.doc

    2. **ArrayList与Vector的区别,HashMap与Hashtable的区别**: - **ArrayList与Vector**: - 同步性:Vector是线程安全的,ArrayList不是。 - 扩容策略:Vector默认扩容为原来容量的两倍,ArrayList则是原来的...

    java中相似概念的区别

    本文将重点解析标题与描述中提及的一些关键知识点,包括final、finally、finalize的区别,以及HashMap与Hashtable、Collection与Collections、Overload与Override等概念的不同之处。 ### final、finally、finalize ...

    笔试面试(复习资料大全)Java笔试题_20071220.doc

    本文将根据提供的部分内容,深入解析Java笔试题中的关键知识点,帮助读者巩固基础,提升技能。 1. **HashMap与HashTable的区别** - HashMap是非线程安全的实现,它是Hashtable的轻量级版本,效率相对较高。 - ...

    Java集合框架核心知识点与面试技巧深度解析

    从基础的概念如集合框架简介、主要接口到具体的数据结构和容器实现(例如ArrayList、LinkedList),再到高级特性和应用场景,例如HashMap和Hashtable之间的异同点以及如何确保集合的不可修改。文中还讨论了许多线程...

    【Java编程基础】20个常用初级笔试题及参考答案:涵盖数据类型、面向对象特性与异常处理等核心概念解析

    此外,涉及到了文件输入输出的处理、线程的概念与实现、HashMap和Hashtable的区别、枚举类型的定义、单例模式的实现以及switch语句的工作原理。最后提到了Java 8的新特性之一——Lambda表达式的使用。每个问题都配有...

    一些java面试经验pdf

    常用的实现类有HashMap(无序,非线程安全)、LinkedHashMap(保持插入或访问顺序)、TreeMap(基于红黑树,键值对按特定顺序排列)和Hashtable(线程安全,但效率较低)。 2. **线程安全的集合**: - **线程不...

    Java集合面试题全集

    #### 八、HashMap与Hashtable、HashSet、TreeMap的区别 - **HashMap与Hashtable**: - `HashMap`非线程安全,而`Hashtable`线程安全。 - `HashMap`允许键和值为`null`,而`Hashtable`不允许。 - **HashMap与...

    对java中Map集合的讲解

    ### 对Java中Map集合的深入解析 #### 一、Map集合概述 Map是Java集合框架中的一个重要组成部分,它提供了一种存储键值对(key-value pair)数据结构的方式。与List和Set不同,Map并没有直接继承自`Collection`接口,...

    阿里一面题目+答案

    HashMap和HashTable的区别,HashTable线程安全吗? **HashMap vs HashTable:** - **线程安全性**:`HashTable`是线程安全的,而`HashMap`不是。 - **空键值支持**:`HashMap`允许使用`null`作为键和值,而`...

Global site tag (gtag.js) - Google Analytics