Java 学习笔记 05 HashMap 和 Hashtable 区别与联系
来源:互联网 发布:任亮 java 编辑:程序博客网 时间:2024/06/06 18:27
HashMap和Hashtable都实现了Map接口,但决定用哪一个之前先要弄清楚它们之间的分别。主要的区别有:线程安全性,同步(synchronization),以及速度。
HashMap几乎可以等价于Hashtable,除了HashMap是非synchronized的,并可以接受null(HashMap可以接受为null的键值(key)和值(value),而Hashtable则不行)。HashMap 是非 synchronized,而Hashtable是synchronized。Java 5提供了ConcurrentHashMap,它是HashTable的替代,比HashTable的扩展性更好。
另一个区别是HashMap的迭代器(Iterator)是fail-fast迭代器,而Hashtable的enumerator迭代器不是fail-fast的。所以当有其它线程改变了HashMap的结构(增加或者移除元素),将会抛出ConcurrentModificationException,但迭代器本身的remove()方法移除元素则不会抛出ConcurrentModificationException异常。但这并不是一个一定发生的行为,要看JVM。这条同样也是Enumeration和Iterator的区别。
由于Hashtable是线程安全的也是synchronized,所以在单线程环境下它比HashMap要慢。如果你不需要同步,只需要单一线程,那么使用HashMap性能要好过Hashtable。HashMap不能保证随着时间的推移Map中的元素次序是不变的。
总结来说:
HashMap:继承于Map接口,允许null键和null值,线程不安全
Hashtable:继承于directoriy接口,不允许null,线程安全,所欲hashtable比较慢。
- Java 学习笔记 05 HashMap 和 Hashtable 区别与联系
- Hashtable和HashMap用法联系与区别
- Java基础知识学习总结(四)---Hashtable和HashMap的区别与联系分析
- Java学习笔记之HashMap和Hashtable的区别
- HashMap、HashSet和HashTable的区别与联系
- HashMap和Hashtable的区别 ---学习笔记
- HashMap与HashTable的联系与区别
- HashMap 和 Hashtable 的区别和联系
- HashMap和HashTable的区别和联系
- HashMap与HashTable学习笔记
- java HashMap和Hashtable区别
- java --HashMap和HashTable区别
- 自学Java系列 笔记5 Java学习之HashMap和Hashtable的区别
- hashmap 与hashtable区别(学习工厂模式笔记)
- Java理解笔记之HashMap与Hashtable区别
- HashMap与HashTable(三)-区别与联系
- java容器之HashTable和HashMap之间的区别和联系
- Java学习之HashMap和Hashtable的区别
- c语言中字符串的定义与输出
- java AWT常用组件
- <c语言经典100例>c28:递归算法求年龄
- 牛客网--二维数组查找
- Codeforces Round #436 (Div. 2) C. Bus
- Java 学习笔记 05 HashMap 和 Hashtable 区别与联系
- String类的intern()
- 自定义ViewGroup之扩展FloatingActionButton
- numpy 维度、轴和transpose的理解
- STM32的创新, 附usart程序
- 下载或移除 Chrome 主题背景
- Web Service (001---schema)
- 使用Hadoop和Spark实现TopN算法(1)——唯一键
- <c语言经典100例>c29:判断回文数