HashMap与HashTable的区别
2016-03-21 18:14
190 查看
1.HashMap 是Hashtable 的轻量级实现(非线程安全的实现),他们都完成了Map 接口,主要区别在于HashMap 允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。
2.HashMap 允许将null 作为一个entry 的key 或者value,而Hashtable 不允许。HashMap 把Hashtable 的contains 方法去掉了,改成containsvalue 和containsKey。因为contains方法容易让人引起误解。
3.Hashtable 继承自Dictionary 类,而HashMap 是Java1.2 引进的Map interface 的一个实现。
4.最大的不同是,Hashtable 的方法是Synchronize 的,而HashMap 不是,在多个线程访问Hashtable 时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。
Hashtable 和HashMap 采用的hash/rehash 算法都大概一样,所以性能不会有很大的差异。
2.HashMap 允许将null 作为一个entry 的key 或者value,而Hashtable 不允许。HashMap 把Hashtable 的contains 方法去掉了,改成containsvalue 和containsKey。因为contains方法容易让人引起误解。
3.Hashtable 继承自Dictionary 类,而HashMap 是Java1.2 引进的Map interface 的一个实现。
4.最大的不同是,Hashtable 的方法是Synchronize 的,而HashMap 不是,在多个线程访问Hashtable 时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。
Hashtable 和HashMap 采用的hash/rehash 算法都大概一样,所以性能不会有很大的差异。
一些资料建议,当需要同步时,用Hashtable,反之用HashMap。但是,因为在需要时,HashMap可以被同步,HashMap的功能比Hashtable的功能更多,而且它不是基于一个陈旧的类的,所以有人认为,在各种情况下,HashMap都优先于Hashtable。
相关文章推荐
- iOS中正则表达式的使用
- Docker容器管理
- LOG相关
- CUDA范例精解通用GPU架构-(2)其实写个矩阵相乘并不是那么难
- Hibernate4一对一关系映射(唯一外键方式)
- 4——new/delete 与 malloc/free 的区别是什么?(我的搜集,持续中。。。。)
- 牛腩--开始就头破血流
- Studio项目提交到github步骤
- 利用jquery给指定的table动态添加一行、删除一行
- java操作HBase
- android WebView 控件加载本地sdcard中html文件图片的问题
- Hibernate4一对一关系映射(共享主键方式)
- Bzoj 4196: [Noi2015]软件包管理器 树链剖分
- 记录ConcurrentHashMap的锁分离技术
- 从尾到头打印链表
- xcode几个常用的快捷键
- 读《构建之法》第1.2.3章的思考与感悟
- JAVA学习总结4
- ubuntu 14.04 启用nfs连接开发板
- 一周讲座活动后的领悟