HashMap和HashTable的区别是面试时面试官经常问的问题,在回答的时候可以选择重点做回答,区别主要有下面几点:
key和value的取值范围不同
HashMap和HashTable都是基于哈希表来实现键值映射的工具类,底层都是哈希表结构。
HashMap允许键为null,值为null,对于HashMap如果使用get方法返回null,并不能表明HashMap不存在这个key,有可能是键对应的值为null。
HashTable则不允许null键和null值。
线程安全
HashMap是非synchronized的,而HashTable是synchronized的。synchronized是Java语言的关键字,可用来给对象和方法或者代码块加锁,当它锁定一个方法或者一个代码块的时候,同一时刻最多只有一个线程执行这段代码。这说明HashTable是线程安全的,而HashMap线程不安全。
效率与同步
HashMap是不同步的、效率高的,HashTable是同步的、效率低的。
虽然HashMap不是线程安全的,但是它的效率会比HashTable要好很多。这样设计是合理的。在我们的日常使用当中,大部分时间是单线程操作的。HashMap把这部分操作解放出来了。
当需要多线程操作的时候可以使用线程安全的ConcurrentHashMap。ConcurrentHashMap虽然也是线程安全的,但是它的效率比HashTable要高很多。
选择与使用
如果不需要线程安全,那么使用HashMap,如果需要线程安全,那么使用ConcurrentHashMap,ConcurrentHashMap不但是线程安全的,效率也比HashTable要高,HashTable已经几乎被淘汰了。

最新文章

  1. Storm 中什么是-acker,acker工作流程介绍
  2. Windows 10 开始菜单修改程序
  3. JSON.stringify()和JOSN.parse()
  4. CentOS 6.5下利用Rsyslog+LogAnalyzer+MySQL部署日志服务器
  5. IntelliTrace简介
  6. webrtc编译之libcommonaudio
  7. (转)A Beginner's Guide To Understanding Convolutional Neural Networks Part 2
  8. [Hive优化] 之 MapJoin
  9. java并发编程_建立概念
  10. NOR和NAND flash区别,RAM 和ROM区别
  11. es suggest did you mean资料
  12. C语言函数不定参数实现方式
  13. Dynamics CRM2013 6.1.1.1143版本插件注册器的一个bug
  14. npx 是什么?
  15. HTTP 客户端接收数据超时
  16. 在 Linux 系统中读取 GBK 编码的文档
  17. vue.js 官网及组件网站记录
  18. AtCoder Beginner Contest 082 A - Round Up the Mean
  19. rails 新建user的phonenumber字段
  20. 使用 RamMap 清理内存 How to Use RamMap to Empty System Working Set

热门文章

  1. 数据结构or算法
  2. 练习题 vue_01:
  3. Sentinel Client: 整合Apollo规则持久化
  4. 关于Windows自动化卸载软件的思路
  5. kinaba 安装踩坑: FATAL Error: [elasticsearch.url]: definition for this key is missing
  6. Java开发:字符串切割split函数——切割符转码注意事项
  7. FutureTask源码
  8. 初识Go语言--(2)Hello World
  9. XMLHttpRequest原生方法
  10. Vue.js 源码分析(十一) 基础篇 过滤器 filters属性详解