数据存储——HashMap,Hashtable的区别

转载 2016年08月29日 10:45:56


HashTable和HashMap区别

第一,继承的父类不同。
Hashtable继承自Dictionary类,而HashMap继承自AbstractMap类。但二者都实现了Map接口。

第二,线程安全性不同。
Hashtable 中的方法是Synchronize的,而HashMap中的方法在缺省情况下是非Synchronize的。在多线程并发的环境下,可以直接使用Hashtable,不需要自己为它的方法实现同步,但使用HashMap时就必须要自己增加同步处理。

第三,是否提供contains方法
HashMap把Hashtable的contains方法去掉了,改成containsValue和containsKey,因为contains方法容易让人引起误解。

Hashtable则保留了contains,containsValue和containsKey三个方法,其中contains和containsValue功能相同。

第四,key和value是否允许null值。
其中key和value都是对象,并且不能包含重复key,但可以包含重复的value。
Hashtable中,key和value都不允许出现null值。
HashMap中,null可以作为键,这样的键只有一个;可以有一个或多个键所对应的值为null。当get()方法返回null值时,可能是 HashMap中没有该键,也可能使该键所对应的值为null。因此,在HashMap中不能由get()方法来判断HashMap中是否存在某个键, 而应该用containsKey()方法来判断。

第五,两个遍历方式的内部实现上不同。
Hashtable、HashMap都使用了 Iterator。而由于历史原因,Hashtable还使用了Enumeration的方式 。

第六,hash值不同。
哈希值的使用不同,HashTable直接使用对象的hashCode。而HashMap重新计算hash值。

第七,内部实现使用的数组初始化和扩容方式不同。
Hashtable和HashMap它们两个内部实现方式的数组的初始大小和扩容的方式。HashTable中hash数组默认大小是11,增加的方式是 old*2+1。

HashMap中hash数组的默认大小是16,而且一定是2的指数。 


HashMap与HashTable原理及数据结构

HashMap与HashTable原理及数据结构hash表结构个人理解hash表以计算出的hashcode或者再hashcode之后加工,再通过一个散列算法 获取到对应的数组地址映射.然后将值存储到该...
  • luoluo01
  • luoluo01
  • 2017年06月09日 09:26
  • 111

HashMap、HashTable和Vector的存储扩容解析

HashMap、HashTable和Vector是面试时比较高频问到的知识点,今天就从三个的底层源码的角度分析三者之间的实现原理和异同点。 HashMap:实现Map接口               ...
  • YHYR_YCY
  • YHYR_YCY
  • 2016年09月14日 09:59
  • 1770

Map<String,String> m=new HashMap<String,String>()

Map m=new HashMap() 等于 HashMap hashMapOut=new HashMap() Map是个接口 HashMap是它的实现类 ...
  • llkoio
  • llkoio
  • 2017年12月25日 00:43
  • 16

Hashset,Hashtable,Hashmap总结

collection框架有自己的接口和实现,主要分为Set接口,List接口和Queue接口。 它们有各自的特点,1.Set的集合里不允许对象有重复的值,2. List允许有重复,它对集合中的对象进...
  • lzh578903779
  • lzh578903779
  • 2017年06月13日 10:49
  • 131

HashTable和HashMap的区别详解

一、HashMap简介       HashMap是基于哈希表实现的,每一个元素是一个key-value对,其内部通过单链表解决冲突问题,容量不足(超过了阀值)时,同样会自动增长。       Has...
  • fujiakai
  • fujiakai
  • 2016年06月04日 19:35
  • 37888

HashMap和Hashtable的详细区别

HashMap和Hashtable的区别 两者最主要的区别在于Hashtable是线程安全,而HashMap则非线程安全。Hashtable的实现方法里面都添加了synchronized关键字来确保线...
  • qq_35181209
  • qq_35181209
  • 2017年07月05日 22:14
  • 368

数据结构-HashMap Hashtable HashSet

They are entirely different constructs. A HashMap is an implementation of Map. A Map maps keys to ...
  • bsbcarter
  • bsbcarter
  • 2015年03月04日 00:24
  • 219

深入浅出 Map 的实现(HashMap、HashTable、LinkedHashMap、TreeMap)

1、基本介绍 HashMap、TreeMap、HashTable、LinkedHashMap 共同实现了接口java.util.Map, 都是键值对形式,且map的key不允许重复 2、详细介绍...
  • shijing266
  • shijing266
  • 2016年01月27日 16:05
  • 4252

java 中 HashMap 与HashTable之间的区别

java 中HashMap 与HashTable之间的区别? 非线程应用中哪个更有效率?
  • napoleonjk
  • napoleonjk
  • 2015年04月22日 16:45
  • 698

Java集合——HashMap、HashTable以及ConCurrentHashMap异同比较

HashMap和HashTable的区别一种比较简单的回答是: (1)HashMap是非线程安全的,HashTable是线程安全的。 (2)HashMap的键和值都允许有null值存在,而HashTa...
  • SEU_Calvin
  • SEU_Calvin
  • 2016年09月25日 15:56
  • 15610
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据存储——HashMap,Hashtable的区别
举报原因:
原因补充:

(最多只允许输入30个字)