HashMap和Hashtable的区别
来源:互联网 发布:美国研究生预科 知乎 编辑:程序博客网 时间:2024/06/05 04:04
常常使用java.util.HashMap、java.util.Hashtable数据结构类,比较如下:
1、安全性
HashMap不安全:原因,(1)transient(介绍参考:http://www.blogjava.net/fhtdy2004/archive/2009/06/20/286112.html)修饰,为了提高速度而不顾安全, (2)键值可以为空
Hashtable安全 :原因,(1)syncronized修饰,线程同步; (2)键和值都不允许为空
2、java源码
(1)HashMap
public class HashMap<K,V>
extends AbstractMap<K,V>
implements Map<K,V>, Cloneable, Serializable{}
(2)Hashtable
public class Hashtable<K,V>
extends Dictionary<K,V>
implements Map<K,V>, Cloneable, java.io.Serializable {}
3、内容
HashMap 键可重复,如果键重复,那么打印结果以最后一次put方法为准
例:
Map ma=new HashMap();
ma.put("123", "22");
ma.put("123", "2");
System.out.println(ma);
最后打印:{123=2}
Hashtable 键不可重复,如果键重复那么下一次的put方法将会覆盖上一次的值
如:Map map=new Hashtable();
map.put("123", "1");
map.put("123", "13");
System.out.println(map);
最综打印:{123=13}而不是{123=1}
4、默认数组大小
HashMap默认数组大小为16,加载因子为0.75,重新hash阈值为12.
Hashtable默认数组大小为11,加载因子为0.75,重新hash阈值为8.
5、扩容
HashMap和Hashtable的数组扩容方式不同。
HashMap中的数组容量大小始终保证为2的指数。重新hash,扩充容量方式为,当前容量大小*2.
Hashtable扩充容量方式为:int newCapacity = oldCapacity * 2 + 1;
参考文档:http://blog.csdn.net/hsuxu/article/details/7454172
- 什么是HashTable?HashMap和HashTable的区别
- HashTable和HashMap的区别
- HashTable和HashMap的区别
- Hashtable和HashMap的区别
- HashTable和HashMap的区别
- Hashtable和HashMap的区别
- Hashtable和HashMap的区别
- HashTable和HashMap的区别
- HashTable和HashMap的区别
- Hashtable和HashMap的区别
- Hashtable和HashMap的区别
- Hashtable和HashMap的区别
- HashTable和HashMap的区别
- HashMap和Hashtable的区别
- hashtable和hashmap的区别
- hashtable 和 hashmap的区别
- HashTable和HashMap的区别
- HashTable和HashMap的区别
- Spring+CXF3.1.3-WSIMPORT 搭建SOAP客户端(三)
- IOS-21-UI懒加载概念及原理
- 2015(2016届)校园招聘季——酷派 篇
- 好用工具记录
- [SDOI2011][BZOJ2241][codevs1564]打地鼠 [三星~]
- HashMap和Hashtable的区别
- magento profile 显示 + print sql profile
- linux 下安装 jdk7
- 栈---栈的压入、弹出序列(Java)
- ios开发,javascript直接调用oc代码而非通过改变url回调方式
- Android基础入门教程——8.3.9 Paint API之—— ColorFilter(颜色过滤器)(1-3)
- 1
- python pexpect 使用详解--针对远程登录机器,在机器上做各种操作,返回交互信息等等
- 解决窗口刷新闪烁