代码编织梦想

                               HashMap与HashTable的区别

面试中经常遇到的,就是此类谁和谁的区别问题,今天这篇文章就简要介绍一下HashMap与HashTable的区别。

 

【1】继承与实现

集合

实现了

继承了

HashMap

Map

Cloneable

Serializable

AbstractMap

HashTable

Dictionary

(1)它们都实现了Map接口,但决定到底要用哪一个,还得从性能、线程安全等方面进行考虑

(2)实现了Cloneable接口,代表它们能够被克隆

(3)实现了Serializable接口,代表它们能够被序列化

 

【2】线程安全

集合

是否线程安全

HashMap

不安全

HashTable

安全

(1)HashMap是非synchronized,HashTable是synchronized的

(2)单线程情况下,不需要进行同步,此时HashMap的性能要高于HashTable

(3)HashMap是不同步的,但是我们可以使用Collections这个集合操作类来使HashMap保持同步,具体方法是

Map map=Collections.synchronizedMap(new HashMap<>());

(4)在JDK1.5中,新增了ConcurrentHashMap类,是线程安全的HashMap,可以用来替代HashTable,而且扩展性也比HashTable好

 

【3】迭代器机制

集合

迭代器

机制

HashMap

Iterator

fail-fast

HashTable

Enumerator

非fail-fast

(1)fail-fast ,也称快速失败机制。指的是在迭代器遍历的同时,人为添加了新元素或删除元素导致集合结构不一致,会抛出ConcurrentModificationException异常,但迭代器本身的remove()方法不会出现此异常。

 

【4】新增元素的要求

集合

新增元素的要求

HashMap

key,value都可以为null

HashTable

key,value都不可以为null

(1)HashTable中key和value中任意一个为null,主线程都会抛出NullPointerException

 

 

其实HashMap与HashTable还有很多值得研究的东西,碍于博主才疏学浅,在这里不作讨论。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_33591903/article/details/81564672

hashmap和hashtable的区别-爱代码爱编程

HashMap和Hashtable的区别 一、HashMap简介 HashMap是在JDK1.2中引入的Map的实现类。 1.HashMap是基于哈希表实现的,每一个元素是一个key-value对,其内部通过单链表解决冲突问

java基础之hashmap(和其他map的区别)-爱代码爱编程

1. 继承关系 2. 基础属性 DEFAULT_INITIAL_CAPACITY = 1 << 4 默认初始化大小16,构造方法可设置,设置值为传入参数的最小的2的幂次方的数值,就比如你传值为20,则Ha

JAVA中HashMap 与HashTable的区别-爱代码爱编程

HashMap与Hashtable的区别是面试中经常遇到的一个问题。这个问题看似简单,但如果深究进去,也能了解到不少知识。本文对两者从来源,特性,算法等多个方面进行对比总结。力争从多角度,全方位的展示二者的不同。 1、产生时间 Hashtable是java一开始发布时就提供的键值映射的数据结构,而HashMap产生于JDK1.2。虽然Hashtable比

什么是HashMap?工作原理?与Hashtable的区别-爱代码爱编程

什么是HashMap? HashMap是一个散列的桶(底层结构:数组+链表),以键值对(key-value)方式进行数据存储.HashMap采用了数组+链表的数据结构,在查询和修改继承了数组的线性查找和链表的寻址查找.HashMap是非synchronized(非线程安全),所以HashMap很快HashMap可以接受null键和值,而Hashtable

HashMap和Hashtable的区别(绝对经典)-爱代码爱编程

相同点: hashmap和Hashtable都实现了map、Cloneable(可克隆)、Serializable(可序列化)这三个接口不同点: 底层数据结构不同:jdk1.7底层都是数组+链表,但jdk1.8 HashMap加入了红黑树Hashtable 是不允许键或值为 null 的,HashMap 的键值则都可以为 null。添加key-valu

HashMap与HashTable-爱代码爱编程

HashMap与Hashtable区别 1.(同分性)Hashtable是同步的,里面的方法都加了synchronized,所以是线程安全的,但是效率会很低,因为所有的线程进来都要排队。所以一般选用concurrentHashMap来实现线程安全,它是使用分段锁来实现的,不是全部锁住。 2.(继承的父类不同)hashtable是继承了Dictionar

Java中HashMap和HashTable的区别-爱代码爱编程

1、两者父类不同 HashMap是继承自AbstractMap类,而Hashtable是继承自Dictionary类。不过它们都实现了同时实现 了map、Cloneable(可复制)、Serializable(可序列化)这三个接口。 2、对外提供的接口不同 Hashtable比HashMap多提供了elments() 和contains() 两个方法

HashMap与Hashtable的区别-爱代码爱编程

HashMap与Hashtable的区别是面试中经常遇到的一个问题。这个问题看似简单,但如果深究进去,也能了解到不少知识。本文对两者从来源,特性,算法等多个方面进行对比总结。力争多角度,全方位的展示二者的不同,做到此问题的终结版。 作者 Hashtable的作者: HashMap的作者: Hash Map的作者比Hashtable的作者多

java map 区别_Java中的HashMap和Map对象之间有什么区别?-爱代码爱编程

小编典典 对象之间没有区别;HashMap在两种情况下,你都有一个。你与对象之间的接口有所不同。在第一种情况下,接口为HashMap,而在第二种情况下为Map。但是底层对象是相同的。 使用Map它的好处是你可以将基础对象更改为另一种类型的映射,而不会与使用它的任何代码破坏合同。如果将其声明为HashMap,则要更改基础实现,则必须更改合同。 示例

Hashtable和HashMap的区别-爱代码爱编程

下面直接来干货,先说这三个Map的区别: HashTable 底层数组+链表实现,无论key还是value都不能为null,线程安全,实现线程安全的方式是在修改数据时锁住整个HashTable,效率低,ConcurrentHashMap做了相关优化初始size为11,扩容:newsize = olesize*2+1计算index的方法:index =

Java中的HashMap和Hashtable的区别-爱代码爱编程

1 该类HashMap大致相当于Hashtable,除了它是非同步的并且允许空值。(HashMap允许空值作为键和值,而Hashtable不允许nulls)。2 HashMap不保证地图的顺序会随着时间的推移保持不变。3 HashMap是非同步的,Hashtable而是同步的。 中的迭代器HashMap是故障安全的,而枚举Hashtable器不是,并且Co

Java之HashMap和Hashtable-爱代码爱编程

1,介绍 Hashtable是java一开始发布时就提供的键值映射的数据结构,而HashMap产生于JDK1.2。虽然Hashtable比HashMap出现的早一些,但是现在Hashtable基本上已经被弃用了。而HashMap已经成为应用最为广泛的一种数据类型了。造成这样的原因一方面是因为Hashtable是线程安全的,效率比较低。 2,HashMa

【最详细】java---hashmap 与 hashtable 的区别?_anwen~的博客-爱代码爱编程

HashMap产生于JDK1.2,HashTable产生于JDK1.1 Hashtable继承自Dictionary类,而HashMap继承自AbstractMap类。二者都实现了Map接口。 Dictionary就是为了记录键值的一一对应关系,已经过时Map将Key映射到Value对象,这个就是为了取代Dictionary抽象类 Null K

hashmap和hashtable区别是什么?有什么区别?_hello_java大师的博客-爱代码爱编程

在一些java面试的过程中,经常有人会遇到这个[java面试题]hashmap和hashtable区别是什么,下面一起来看看这个面试题的答案吧。 一、hashmap和hashtable区别 具体来说的话hashmap和hashtable一共有7个方面的不同,下面一一来介绍一下。 1、hash值不同 HashTable:直接使用对象的hashCode

java基础: hashmap和hashtable的区别_javahashmap和hashtable的区别-爱代码爱编程

一、背景。 这篇文章主要介绍了HashMap和HashTable详细教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下。放假在家里休息,闲来无事,想巩固巩固自己的基础知识。Java基础这个我会一直更新的,希望大家关注 收藏 点赞。 二、概述。 1.HashMap的数据结构: HashMa

java中map 和 hashmap 的区别_java中map和hashmap的区别-爱代码爱编程

1.Map是一个接口,HashMap是一个Map的实现类(HashMap继承了AbstractMap类,实现了Map接口); 2.他们都是以键值对的双列储存,一个键对应一个值,键不可重复,值可以重复。而且他们的存储是无序的和放入的前后顺序无关; 3.他们都是只能有一个键为null的数据,但是可以有多个记录的值为null如下: [null:adc,

java(hashmap类和hashtable类)_hashmap是接口还是实现类-爱代码爱编程

1、Map接口常用的实现类:HashMap、Hashtable和properties 2、HashMap是Map接口使用频率最高的实现类 3、HashMap是以<key—value>的方式来存储数据 4、key不能重复,但是value可以重复,允许使用null键和null值 5、如果添加相同的key,则会覆盖原来的value,等同于修改