[转载]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平台的主要功能 ...