HashMap
1. HashMap简介
- HashMap是在JDK1.2中引入的Map的实现类。
- HashMap是基于哈希表实现的,每一个元素是一个key-value对,其内部通过单链表解决冲突问题,容量不足(超过了阀值)时,同样会自动增长。
- HashMap是非线程安全的,只是用于单线程环境下,多线程环境下可以采用concurrent并发包下的concurrentHashMap。
- HashMap 实现了Serializable接口,因此它支持序列化,实现了Cloneable接口,能被克隆。
- HashMap中key和value都允许为null。但只能有一条记录可以是一个空的key;任意数量的条目可以是空的value
2. 技术本质
2.1 数据结构
jdk 1.7:数组+链表
- 数组(ArrayList):采用一段连续的存储单元来存储数据。
- 特点:查询速度快,插入删除速度慢
- 查询时间复杂度O(1) ;删除插入时间复杂度O(N)
- 链表(LinkedList):是一种物理存储单元上非连续、非顺序的存储结构
- 特点: 插入删除速度快,查询速度慢
- 删除
- 特点: 插入删除速度快,查询速度慢