浅谈HashMap与HashTable
2016-06-09 10:52
375 查看
最近去面试,面试官问了我一个问题,HashMap与HashTable有什么区别?我当时一脸懵B,没能完整答上来。于是,我整理了此文。
HashMap与HashTable的区别:
HashMap是线程不安全的,HashTable是线程安全的,它的内部方 法基本都是synchronizedHashMap的键和值都是允许为null的,而HashTable则不行
因为HashMap是线程安全的,所以它比HashTable的效率高
那问题来了,什么是线程安全,什么又是线程不安全呢?
线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问,直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。线程不安全就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得的数据是脏数据。
HashMap与HashTable的底层实现是什么呢?
HashMap与 HashTable的内部存储结构都采用了相同的存储机制—哈希表(散列表)。二者的实现基本一致。采用哈希表的好处是:这种数据结构综合了数组和链表的优点,所以具有较快的查询速度,以及相对较快的增删速度,很适合在海量数据的环境中使用。
想要深入了解HashMap与HashTable的内部实现机制,请参考终点大神的深入解析HashMap、HashTable
相关文章推荐
- 只有程序员看的懂的面试圣经|如何拿下编程面试
- 下一次技术面试时要问的 3 个重要问题
- PHP程序员面试 切忌急功近利(更需要注重以后的发展)
- C#常见算法面试题小结
- php 面试碰到过的问题 在此做下记录
- asp.net 面试+笔试题目第1/2页
- asp.net 面试 笔试题目[附答案]第1/3页
- Python爬虫工程师面试问题总结
- 谈谈最近深圳找工作经历
- 面试:(设计,架构)
- 面试总结(php)
- PHP中级面试经历
- 戴维营教育2015年iOS暑期班笔试面试基础考核题
- 一次有意思的面试
- 程序员编程面试取胜的8个技巧
- PHP相关面试中最经常涉及的12个问题
- 产品经理到底该如何自我介绍?
- 产品经理面试过程中如何回答比较宽泛的问题?
- 阿里资深HR教你一分钟叩开阿里巴巴大门
- 用托福满分作文思路,妥妥搞定产品经理面试