HashMap和Hashtable的区别
2015-07-30 15:55
323 查看
HashMap和Hashtable的区别
导读:1 HashMap不是线程安全的
hastmap是一个接口 是map接口的子接口,是将键映射到值的对象,其中键和值都是对象,并且不能包含重复键,但可以包含重复值。HashMap允许null key和null value,而hashtable不允许。
2 HashTable是线程安全的一个Collection。
HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。 HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。 HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。 Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map
interface的一个实现。 最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。 Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差
public static void main(String args[]) { HashTable h=new HashTable(); h.put("用户1",new Integer(90)); h.put("用户2",new Integer(50)); h.put("用户3",new Integer(60)); h.put("用户4",new Integer(70)); h.put("用户5",new Integer(80)); Enumeration e=h.elements(); while(e.hasMoreElements()){
System.out.println(e.nextElement()); }
总结:
hashmap | 线程不安全 | 允许有null的键和值 | 效率高一点、 | 方法不是Synchronize的要提供外同步 | 有containsvalue和containsKey方法 | HashMap 是Java1.2 引进的Map interface 的一个实现 | HashMap是Hashtable的轻量级实现 |
hashtable | 线程安全 | 不允许有null的键和值 | 效率稍低、 | 方法是是Synchronize的 | 有contains方法方法 | 、Hashtable 继承于Dictionary 类 | Hashtable 比HashMap 要旧 |
相关文章推荐
- hdoj 1950 Bridging signals
- Cygwin上安装openssl
- 百度云推 pem
- iOS系列教程之用instruments来检验你的app
- 【原文件】tinyxml.cpp
- 【原文件】tinystr.cpp
- 网页中嵌入媒体播放器
- 如何保障流式处理的数据一致性
- 算法中的增长率(Rate of Growth)是什么意思?
- Java内存溢出详解+Tomcat配置文件中JVM的启动参数设置
- JS对JSON的操作总结 (转)
- 一种通用的toString()方法的编写
- AppStore被Rejected 的各种原因
- win8下怎样进行刻录光盘?
- Zookeeper安装教程
- LATEX 强制multirow中内容居中
- MongoDB实战系列之四:mongodb副本集部署
- 【原文件】tinyxml.h
- 用Hopper搞定Mac迅雷的会员以及离线下载功能
- 当你学会专注,人生才算真正成熟