HashMap与Hashtable的区别---转载自oznyang

news/2024/7/3 14:49:18 标签: hashmap, iterator, null, vector, 多线程, 框架

 HashTable的应用非常广泛,HashMap是新框架中用来代替HashTable的类,也就是说建议使用HashMap,不要使用HashTable。可能你觉得HashTable很好用,为什么不用呢?这里简单分析他们的区别。 
1.HashTable的方法是同步的,HashMap未经同步,所以在多线程场合要手动同步HashMap这个区别就像Vector和ArrayList一样。

2.HashTable不允许null值(key和value都不可以),HashMap允许null值(key和value都可以)。

3.HashTable有一个contains(Object value),功能和containsValue(Object value)功能一样。

4.HashTable使用Enumeration,HashMap使用Iterator。

以上只是表面的不同,它们的实现也有很大的不同。

5.HashTable中hash数组默认大小是11,增加的方式是 old*2+1。HashMap中hash数组的默认大小是16,而且一定是2的指数。

6.哈希值的使用不同,HashTable直接使用对象的hashCode,代码是这样的:
int hash = key.hashCode();
int index = (hash & 0x7FFFFFFF) % tab.length;
而HashMap重新计算hash值,而且用与代替求模:
int hash = hash(k);
int i = 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);
}
以上只是一些比较突出的区别,当然他们的实现上还是有很多不同的,比如
HashMap对null的操作

 

原文链接地址:http://oznyang.iteye.com/blog/30690


http://www.niftyadmin.cn/n/1797392.html

相关文章

北京市大兴区卫星地图下载

一、概述 大兴区位于北京市南部&#xff0c;东临通州区&#xff0c;南临河北省固安县、霸州市等&#xff0c;西与房山区隔永定河为邻&#xff0c;北接丰台、朝阳区。东经11613′-11643′&#xff0c;北纬3926′-3951′。全境属永定河冲积平原&#xff0c;地势自西向东南缓…

各种转换成容器---更新中......

//整形数组转换成ListList<Integer> ints Arrays.asList(1,2,3,4,5,1,3,3);String fact "How are you";//转换为字符数组char[] factT fact.toCharArray();//按空格分隔&#xff0c;转换ListList<String> strings Arrays.asList(fact.split(" &…

北京市东城区卫星地图下载

一、概述东城区&#xff0c;隶属于北京市&#xff0c;地处北京市中心城区的东部&#xff0c;东、北与朝阳区接壤&#xff0c;南与丰台区相连&#xff0c;西与西城区毗邻。东西最大距离5.2千米&#xff0c;南北最大距离13千米。区境介于东经1162217"-1162646"&#xf…

如果有一天,有个人递过来一支唇油,然后对我说:嘿,弄下你那难受又难看的唇吧!然后我会倾我一生去待这个......

如果有一天&#xff0c;有个人递过来一支唇油&#xff0c;然后对我说&#xff1a;嘿&#xff0c;弄下你那难受又难看的唇吧&#xff01;然后我会倾我一生去待这个人好。转载于:https://www.cnblogs.com/mazhuang/archive/2008/11/27/1641744.html

北京市房山区卫星地图下载

一、概述房山区隶属于北京市&#xff0c;地处华北平原与太行山交界地带&#xff0c;介于北纬3930′~3955′&#xff0c;东经11525′~11615′&#xff0c;是首都的西南门户。区政府所在地良乡是《北京市总体规划》中首都十四个中心卫星城之一&#xff0c;距京城&#xff08;六里…

vs 2008 juqery支持

上个月&#xff0c;我在博客里宣布了微软将对jQuery提供支持。在过去的几个星期里&#xff0c;我们与jQuery开发团队合作&#xff0c;在Studio 2008 和 Visual Web Developer 2008 Express版本&#xff08;免费的&#xff09;中增加了很好的jQuery intellisense支持。现在这个支…

北京市丰台区卫星地图下载

一、概述   北京市丰台区是北京市的城六区之一&#xff0c;是首都中心城区和首都核心功能主承载区&#xff0c;位于北京市南部&#xff0c;东面与朝阳区接壤&#xff0c;北面与东城区、西城区、海淀区、石景山区接壤&#xff0c;西北面与门头沟区&#xff0c;西南面与房山区&…

Pjax调用

$.pjax({container:#content_center,url:href,data:data});$(document).on(pjax:send, function() {//pjax链接点击后显示加载动画&#xff1b;//显示动画 }); $(document).on(pjax:complete, function() {//pjax链接加载完成后隐藏加载动画&#xff1b;//隐藏动画 });content_…