[转载]hashmap hashtable 的区别
 
|  | Hashtable | HashMap | 
| 并发操作 | 使用同步机制, 实际应用程序中,仅仅是Hashtable本身的同步并不能保证程序在并发操作下的正确性,需要高层次的并发保护。 下面的代码试图在key所对应的value值等于x的情况下修改value为x+1 {  value = hashTable.get(key);    if(value.intValue()== x){ hashTable.put(key,      new Integer(value.intValue()+1));    } } 如2个线程同时执行以上代码,可能放入不是x+1,而是x+2. | 没有同步机制,需要使用者自己进行并发访问控制 | 
| 数据遍历的方式 | Iterator 和 Enumeration | Iterator | 
| 是否支持fast-fail | 用Iterator遍历,支持fast-fail 用Enumeration不支持fast-fail. | 支持fast-fail | 
| 是否接受值为null的Key 或Value? | 不接受 | 接受 | 
| 根据hash值计算数组下标的算法 | 当数组长度较小,并且Key的hash值低位数值分散不均匀时,不同的hash值计算得到相同下标值的几率较高 hash = key.hashCode(); index=(hash&0x7FFFFFFF) % tab.length; | 优于hashtable,通过对Key的hash做移位运算和位的与运算,使其能更广泛地分散到数组的不同位置 hash = hash (k); index = indexFor(hash, table.length); static int hash(Object x) {  int h = x.hashCode(); h += ~(h << 9);  h ^= (h >>> 14);   h += (h << 4);  h ^= (h >>> 10);  return h; } static int indexFor(int h, int length) { return h & (length-1); } | 
| Entry数组的长度 | Ø         缺省初始长度为11, Ø         初始化时可以指定initial capacity | Ø         缺省初始长度为16, Ø         长度始终保持2的n次方 Ø         初始化时可以指定initial capacity,若不是2的次方,HashMap将选取第一个大于initial capacity 的2n次方值作为其初始长度 | 
| LoadFactor负荷因子 | 0.75 | |
| 负荷超过(loadFactor * 数组长度)时,内部数据的调整方式 | 扩展数组:2*原数组长度+1 | 扩展数组: 原数组长度 * 2 | 
| 两者都会重新根据Key的hash值计算其在数组中的新位置,重新放置。算法相似,时间、空间效率相同 | ||
[转载]hashmap hashtable 的区别的更多相关文章
- HashMap & HashTable的区别
		HashMap & HashTable的区别主要有以下: 1.HashMap是线程不安全的,HashTable是线程安全的.由这点区别可以知道,不考虑线程安全的情况下使用HashMap的效率明 ... 
- HashMap,HashTable,TreeMap区别和用法
		开始学HashTable,HashMap和TreeMap的时候比较晕,觉得作用差不多,但是到实际运用的时候又发现有许多差别的.需要大家注意,在实际开发中以需求而定. java为数据结构中的映射定义了一 ... 
- ConcurrentHashMap以及HashMap,HashTable的区别
		ConcurrentHashMap与HashMap,和HashTable 的区别? ConcurrentHashMap是一个线程安全的key-value数据结构,而HashMap不是.Concurre ... 
- 六.HashMap HashTable HashSet区别剖析总结
		HashMap.HashSet.HashTable之间的区别是Java程序员的一个常见面试题目,在此仅以此博客记录,并深入源代码进行分析: 在分析之前,先将其区别列于下面: 1.HashSet底层采用 ... 
- (转)hashmap hashtable 的区别 Hash table 内部的数据结构
		转自:http://www.cnblogs.com/carbs/archive/2012/07/04/2576995.html Hashtable 和 HashMap 做为 Map 的基本特性 两者都 ... 
- [置顶] HashMap HashTable HashSet区别剖析
		HashMap.HashSet.HashTable之间的区别是Java程序员的一个常见面试题目,在此仅以此博客记录,并深入源代码进行分析: 在分析之前,先将其区别列于下面 1:HashSet底层采用的 ... 
- HashMap HashTable HashSet区别剖析
		HashMap.HashSet.HashTable之间的区别是Java程序员的一个常见面试题目,在此仅以此博客记录,并深入源代码进行分析: 在分析之前,先将其区别列于下面 1:HashSet底层采用的 ... 
- arrayList LinkedList HashMap HashTable的区别
		ArrayList 采用的是数组形式来保存对象的,这种方式将对象放在连续的位置中,所以最大的缺点就是插入删除时非常麻烦 LinkedList 采用的将对象存放在独立的空间中,而且在每个空间中还保存下一 ... 
- Java集合——HashMap,HashTable,ConcurrentHashMap区别
		Map:“键值”对映射的抽象接口.该映射不包括重复的键,一个键对应一个值. SortedMap:有序的键值对接口,继承Map接口. NavigableMap:继承SortedMap,具有了针对给定搜索 ... 
随机推荐
- [原]unity5 AssetBundle打包
			本文unity版本5.1.3 一.现有的打包教程: 1.http://liweizhaolili.blog.163.com/blog/static/16230744201541410275298/ 阿 ... 
- 优酷、YouTube、Twitter及JustinTV视频网站架构设计笔记
			本文是整理的关于优酷.YouTube.Twitter及JustinTV几个视频网站的架构或笔记,对于不管是视频网站.门户网站或者其它的网站,在架构上都有一定的参考意义,毕竟成功者的背后总有值得学习的地 ... 
- sencha cmd 更新日志
			http://cdn.sencha.com/cmd/6.2.1.29/release-notes.html 
- IL速查
			名称 说明 Add 将两个值相加并将结果推送到计算堆栈上. Add.Ovf 将两个整数相加,执行溢出检查,并且将结果推送到计算堆栈上. Add.Ovf.Un 将两个无符号整数值相加,执行溢出检查,并且 ... 
- Part 2: Oracle E-Business Suite on Cloud FAQ
			Running Oracle E-Business Suite on Oracle Cloud is simple, but it doesn't take too much effort to co ... 
- 使用UIKit制作卡牌游戏(二)ios游戏篇
			转自朋友Tommy 的翻译,自己只翻译了第三篇教程. 译者: Tommy | 原文作者: Matthijs Hollemans写于2012/07/06 原文地址: http://www.raywend ... 
- web通过ActiveX打印
			最近做了一个activex控件,可以通过html页面动态设置报表文件的数据,控件里的报表是通过FastReport实现了,可以通过FastReport先把报表设置好.欢迎大家提意见 控件及Demo下载 
- 轻量级IOC框架:Ninject (下)
			一,创建依赖链(Chains of Dependency) 当我们向Ninject请求创建一个类型时,Ninject会去检查该类型和其他类型之间的耦合关系.如果有额外的依赖,Ninject也会解析它们 ... 
- EventKit 学习(译)
			From:http://docs.xamarin.com/guides/ios/platform_features/introduction_to_eventkit/ 本教程展示了对于如何通过Even ... 
- RTX发送消息提醒实现以及注意事项
			一.RTX简介 RTX是腾讯公司推出的企业级即时通信平台.该平台定位于降低企业通信费用,增强企业内部沟通能力,改善企业与客户之间的沟通渠道,创造新兴的企业沟通文化,提高企业生产力.RTX平台的主要功能 ... 
