`

HashMap与HashTable的区别(含源码分析)

阅读更多
HashMap HashTable
HashMap中的hash数组的默认大小是16,而且一定是2的指数。 HashTable中hash数组默认大小是11,增加的方式是 old*2+1
HashMap非同步的(异步) HashTable的方法是同步的
HashMap允许null值(key和value都可以,但只允许一个) HashTable不允许null值(key和value都不可以)
HashMap循环使用Iterator HashTable循环使用Enumeration
HashMap不是线程安全的 HashTable是线程安全的一个Collection
HashMap继承自AbstractMap类 Hashtable继承自Dictionary类

 

相同点:都是无序排列的,都实现了Map接口。

 

 

 

部分源码:

HashMap:
public class HashMap<K, V> extends AbstractMap<K, V> implements Map<K, V>,

private static final int DEFAULT_SIZE = 16;

public Object clone() {


Hashtable:
public class Hashtable<K, V> extends Dictionary<K, V> implements Map<K, V>,

public Hashtable() {
        this(11);
    }

public synchronized Object clone() {

 

分享到:
评论

相关推荐

    Java集合专题总结:HashMap 和 HashTable 源码学习和面试总结

    Java集合专题总结:HashMap和HashTable源码学习和面试总结 本文总结了Java集合专题中的HashMap和HashTable,涵盖了它们的源码学习和面试总结。HashMap是一种基于哈希表的集合类,它的存储结构是一个数组,每个元素...

    HashMap 源码分析

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

    HashMap源码分析

    ### HashMap源码分析 #### 一、概述 `HashMap`是Java编程语言中非常重要的一个数据结构,它属于`java.util`包的一部分,是`Map`接口的一个具体实现类。`HashMap`允许存储键值对,并且支持使用`null`作为键或值,这...

    并发编程atomic&collections-课上笔记1

    本文主要讲述了 Java 中的并发编程,包括 atomic 包的介绍、CAS 算法的原理、ABA 问题的解决方案,以及 collections 中的 HashMap、HashTable 和 ConcurrentHashMap 的源码分析。 Atomic 包的介绍 ----------------...

    HashMap源码分析系列-第四弹:HashMap多线程解决方案.docx

    #### 二、HashMap线程安全问题分析 在多线程环境中,`HashMap`的主要线程安全问题包括但不限于: 1. **链表死循环问题**:在JDK 1.7中,当多个线程同时进行`put`操作时,可能会出现链表死循环的情况,这是一个严重...

    HashMap资料.zip

    10. **面试常见问题**:面试中常问的问题包括HashMap的扩容机制、哈希冲突解决策略、线程安全性、迭代器的使用等,还可能涉及HashMap的源码分析。 通过深入学习和理解HashMap,不仅可以提高代码的编写效率,也能在...

    Java容器之Hashtable源码分析

    【Java容器之Hashtable源码分析】 在Java编程中,`Hashtable`是一个古老的容器类,它继承自`Dictionary`接口,并实现了`Map`接口,同时也实现了`Cloneable`和`Serializable`接口。`Hashtable`与`HashMap`类似,都是...

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

    HashMap是Java编程语言中最常用的集合类之一,尤其在面试中,HashMap的相关知识是考察...这套学习资料应该包含了HashMap的实例分析、源码解读、常见面试题以及实战演练等内容,确保你全面掌握这一核心Java数据结构。

    对java基础集合部分(List、HashMap、HashSet、ArrayList等)底层源码的分析与总结

    Java集合框架是Java编程中非常重要的部分,它提供了一种高效、灵活的数据组织方式。本文主要探讨了几个关键...通过对源码的深入分析,我们可以更好地掌握Java集合框架的工作原理,并根据实际需求选择最适合的数据结构。

    Java集合框架源码剖析:HashSet 和 HashMap

    因此本文将重点分析HashMap。  HashMap实现了Map接口,允许放入null元素,除该类未实现同步外,其余跟Hashtable大致相同,跟TreeMap不同,该容器不保证元素顺序,根据需要该容器可能会对元素重新哈希,元素的顺序...

    Java并发系列之ConcurrentHashMap源码分析

    Java并发系列之ConcurrentHashMap源码分析 ConcurrentHashMap是Java中一个高性能的哈希表实现,它解决了HashTable的同步问题,允许多线程同时操作哈希表,从而提高性能。 1. ConcurrentHashMap的成员变量: ...

    java8集合源码分析-Petal:面试复习及面试经验

    Java基础:集合类、HashMap/HashTable/CurrencyHashMap这几个的区别以及不JDK版本的区别、其他面向对象的语法,NIO,BIO,AIO; JVM:虚拟机结构,内存模型,双亲委派模型,内存溢出举例说明,垃圾回收算法,四大...

    基础知识.pdf

    探讨了集合框架中List、Set、Map的使用与区别,包括ArrayList与LinkedList、HashMap与Hashtable、HashSet与HashMap、HashMap与ConcurrentHashMap等的区别和原理。详细讲解了HTTP请求的GET与POST方式的区别,session...

    java面试题及答案宝典

    2. **ArrayList与Vector的区别,HashMap与Hashtable的区别**: - `ArrayList`与`Vector`: - 同步性:`Vector`是线程安全的,`ArrayList`不是。 - 数据增长:`Vector`默认增长为原来的两倍,`ArrayList`增长为...

    全面解析Java中的HashMap类

    本文将深入探讨HashMap的基本特性、哈希表数据结构以及JDK 1.7版本中的HashMap源码分析。 首先,HashMap的基本特性如下: 1. **允许null值**:HashMap允许键和值为null,而Hashtable则不允许。 2. **非线程安全**...

    java 面试宝典

    2. HashMap与HashTable:线程安全与非线程安全,以及HashMap的工作原理。 3. ConcurrentHashMap:并发环境下高效的数据结构,理解分段锁的概念。 4. LinkedList与ArrayList的性能对比:在添加、删除元素时的效率差异...

    java技术指南

    文档内容丰富,既包括了Java的基本语法、源码分析、多线程处理、IO流操作、设计模式、常用框架、数据库技术、数据结构与算法、JVM原理、Web开发技术,也包括了Linux操作系统、Redis数据库、UML绘图以及JDK的新特性等...

Global site tag (gtag.js) - Google Analytics