古代和现在的区别Hashtable和HashMap

Hashtable和HashMap的异同

1 HashMap类出现之前,jdk中存在一个和他同样采用哈希表储存方式,同样实现键值映射的集合类Hashtable。两个实现原理相同,功能相同,很多情况可以互用。

Hashtable和HashMap的区别如下

1 Hashtable继承自Dictionary类,而HaspMap实现了Map接口。

2 Hashtable是线程安全的,占用资源比较多,速度比较慢。而HashMap是线程非非安全的,在多线程中需要手动管理线程同步,他的优点在于速度比较快,不重安全。

Hashtable不许有null值(ke和value)都不允许,HasbMap允许有null值(ke和value)都可以,开发当中最好用HashMap

3 另一个区别是HashMap的迭代器(Iterator)是fail-fast迭代器,而Hashtable的enumerator迭代器不是fail-fast的。所以当有其它线程改变了HashMap的结构(增加或者移除元素),将会抛出ConcurrentModificationException,但迭代器本身的remove()方法移除元素则不会抛出ConcurrentModificationException异常。但这并不是一个一定发生的行为,要看JVM。这条同样也是Enumeration和Iterator的区别。

时间: 2024-10-05 04:43:04

古代和现在的区别Hashtable和HashMap的相关文章

HashTable Dictionary HashMap

脑海中一直存在两个Hash,一个是HashMap另一个是HashTable,今天来总结一下两者的区别 HashTable和HashMap 相同点:表示根据键的哈希代码进行组织的键/值对的集合. 区别:HashMap在C#中不存在的,而是在Java中 1.C#每一个元素都是存储在DictionaryEntry对象中的键/值对,键不能为 null,但值可以. 2.在Java的HashMap中,null可以作为键,这样的键只有一个:可以有一个或多个键所对应的值为null.当get()方法返回null值

C# Hashtable 使用说明 以及 Hashtable和HashMap的区别

一,哈希表(Hashtable)简述 在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似key/value的键值对,其中key通常可用来快速查找,同时key是区分大小写:value用于存储对应于key的值.Hashtable中key/value键值对均为object类型,所以Hashtable可以支持任何类型的key/value键值对. 二,哈希表的简单操作 在哈希表中添加一个key/value键值对:Hashta

Hashtable和HashMap类的区别

Hashtable和HashMap类有三个重要的不同之处.第一个不同主要是历史原因.Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现. 也许最重要的不同是Hashtable的方法是同步的,而HashMap的方法不是.这就意味着,虽然你可以不用采取任何特殊的行为就可以在一个多线程的应用程序中用一个Hashtable,但你必须同样地为一个HashMap提供外同步.一个方便的方法就是利用Collections类的静态的synchroni

ConcurrentHashMap、HashTable、HashMap的区别

HashTable与ConcurrentHashMap: 相同点:都是线程安全的,可以在多线程的环境下运行.key和value都不能为null 区别:性能上的差异.HashTable每次操作对象都会锁住对象,性能差:而ConcurrentHashMap内部使用Segment数组,每个Segment类似于Hashtable,在操作的时候仅会锁住当前操作的某个Segment对象,其它的线程能够并发执行其它的Segment对象,性能比较好. HashTable与HashMap: 相同点:都是以键值对存

Java中List,ArrayList、Vector,map,HashTable,HashMap区别用法

Java中List,ArrayList.Vector,map,HashTable,HashMap区别用法 标签: vectorhashmaplistjavaiteratorinteger ArrayList 和Vector是采用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,都允许直接序号索引元素,但是插入数据要设计到数组元素移动 等内存操作,所以索引数据快插入数据慢,Vector由于使用了synchronized方法(线程安全)所以性能上比ArrayList要差,Linke

Java中HashTable和HashMap的区别

在Java中,HashTable和HashMap都是哈希表,那么它们有什么区别呢? 1.它们所继承的类不一样. HashTable和HashMap都实现了Map接口,但是它们所继承的类时不同的.HashTable继承了Dictionary类(Dictionary类已经过时),而HashMap则是继承了AbstractMap类.我们来看看它们的函数声明. HashTable声明: 1 public class Hashtable<K,V>extends Dictionary<K,V>

HashTable和HashMap区别

一.HashMap简介 HashMap是基于哈希表实现的,每一个元素是一个key-value对,其内部通过单链表解决冲突问题,容量不足(超过了阀值)时,同样会自动增长. HashMap是非线程安全的,只是用于单线程环境下,多线程环境下可以采用concurrent并发包下的concurrentHashMap. HashMap 实现了Serializable接口,因此它支持序列化,实现了Cloneable接口,能被克隆. HashMap存数据的过程是: HashMap内部维护了一个存储数据的Entr

Java 中 Hashtable与HashMap的区别

Map Map是一个以键值对存储的接口.Map下有两个具体的实现,分别是HashMap和HashTable. 区别: 1.HashMap是线程非安全的,HashTable是线程安全的,所以HashMap的效率高于HashTable. 说明:hashmap多线程运行中可能会改变值,多线程时需要加锁 ,保证线程安全,hashTable就不需要 2.HashMap允许键或值为空,而HashTable不允许键或值为空. 原文地址:https://www.cnblogs.com/xiaohouye/p/1

HashTable和HashMap的区别详解

原文 一.HashMap简介      HashMap是基于哈希表实现的,每一个元素是一个key-value对,其内部通过单链表解决冲突问题,容量不足(超过了阀值)时,同样会自动增长. HashMap是非线程安全的,只是用于单线程环境下,多线程环境下可以采用concurrent并发包下的concurrentHashMap. HashMap 实现了Serializable接口,因此它支持序列化,实现了Cloneable接口,能被克隆. HashMap存数据的过程是: HashMap内部维护了一个存