HashMap和Hashtable有什么区别?

HashMap和Hashtable都是实现Map接口的,但是:

  1.HashMap允许键和值都是null的,而Hashtable不允许键和值为null

  2.Hashtable是同步的,而HashMap不是。所以HashMap适用于单线程,而Hashtable适用于多线程

  3.HashMap提供了可供应用迭代的键的集合,因此HashMap是快速失败的,而Hashtable是提供了对键的列举

原文地址:https://www.cnblogs.com/yzh-blog/p/8835454.html

时间: 2024-10-20 05:00:34

HashMap和Hashtable有什么区别?的相关文章

HashMap与HashTable联系与区别

HashMap与HashTable 1.hashMap去掉了HashTable 的contains方法,但是加上了containsValue()和containsKey()方法. 2.hashTable同步的,而HashMap是非同步的,效率上比hashTable要高,HashMap不是线程安全的 ,HashTable是线程安全的一个Collection.3.hashMap允许空键值,而hashTable不允许. ashtable继承自Dictionary类,而HashMap是Map接口的一个实

ArrayList,Vector,HashMap,HashSet,HashTable之间的区别与联系

看上面的框架图,先抓住它的主干,即Collection和Map. 1 Collection是一个接口,是高度抽象出来的集合,它包含了集合的基本操作和属性. Collection包含了List和Set两大分支. (01) List是一个有序的队列,每一个元素都有它的索引.第一个元素的索引值是0. List的实现类有LinkedList, ArrayList, Vector, Stack. (02) Set是一个不允许有重复元素的集合. Set的实现类有HastSet和TreeSet.HashSet

HashMap和HashTable简介和区别

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

HashMap、HashTable、ConcurrentHashMap区别

HashMap和HashTable有何不同? 线程安全: HashTable 中的方法是同步的,而HashMap中的方法在默认情况下是非同步的.在多线程并发的环境下,可以直接使用HashTable,但是要使用HashMap的话就要自己增加同步处理了. 继承关系: HashTable是基于陈旧的Dictionary类继承来的. HashMap继承的抽象类AbstractMap实现了Map接口. 允不允许null值: HashTable中,key和value都不允许出现null值,否则会抛出Null

HashMap和Hashtable的详细区别

1.Hashtable是线程安全,HashMap是非线程安全 HashMap的性能会高于Hashtable,我们平时使用时若无特殊需求建议使用HashMap,在多线程环境下若使用HashMap需要使用Collections.synchronizedMap()方法来获取一个线程安全的集合(Collections.synchronizedMap()实现原理是Collections定义了一个SynchronizedMap的内部类,这个类实现了Map接口,在调用方法时使用synchronized来保证线

hashMap,hashTable,concurrentHashMap区别

HashTable 底层数组+链表实现,无论key还是value都不能为null,线程安全,实现线程安全的方式是在修改数据时锁住整个HashTable,效率低,ConcurrentHashMap做了相关优化 初始size为11,扩容:newsize = olesize*2+1 计算index的方法:index = (hash & 0x7FFFFFFF) % tab.length HashMap 底层数组+链表实现,可以存储null键和null值,线程不安全 初始size为16,扩容:newsiz

Java——(七)Map之HashMap和Hashtable实现类

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- Map Map用于具有映射关系的数据,因此Map集合里保存着两组值,一组值用于保存Map里的key, 另一组值用于保存Map里的value,key和value都可以是任何引用类型的数据.Map的key不允许 重复,即同一个Map对象的任何两个key通过equals()方法比较总是返回false. Set与Map之间的关系非常密切.虽然Map中放的元素是key—value对,Set集合中放的元素

HashMap,Hashtable,ConcurrentHashMap 和 synchronized Map 的原理和区别

HashMap 是否是线程安全的,如何在线程安全的前提下使用 HashMap,其实也就是HashMap,Hashtable,ConcurrentHashMap 和 synchronized Map 的原理和区别.当时有些紧张只是简单说了下HashMap不是线程安全的:Hashtable 线程安全,但效率低,因为是 Hashtable 是使用 synchronized 的,所有线程竞争同一把锁:而 ConcurrentHashMap 不仅线程安全而且效率高,因为它包含一个 segment 数组,将

HashMap和Hashtable的区别

导读: 1 HashMap不是线程安全的 hastmap是一个接口 是map接口的子接口,是将键映射到值的对象,其中键和值都是对象,并且不能包含重复键,但可以包含重复值.HashMap允许null key和null value,而hashtable不允许. 2   HashTable是线程安全的一个Collection. HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可