当前位置: 移动技术网 > IT编程>开发语言>Java > HashMap源码详解与对比

HashMap源码详解与对比

2019年03月27日  | 移动技术网IT编程  | 我要评论

酥胸,来财街,周牧茵

 

  前几天工作忙得焦头烂额时,同事问了一下关于map的特性,刹那间懵了一下,紧接着就想起来了一些关于map的一些知识,因为只要涉及到collection集合类时,就会谈及map类,因此理解好map相关的知识是灰常重要的。

 

  collection集合类 与 map类的层次结构,如下图:

  

 

  map是用来存储 key-value(k-v)键值对,且不允许key重复。(jdk 1.8)

  map的子类包含hashtable,hashmap,linkedhashmap,treemap,enummap,j.u.c并发包下面包含concurrenthashmap,concurrentskiplistmap。

  注:hashtable是通过“synchronized”来实现同步,concurrenthashmap是通过“分段锁”来实现并发,concurrentskiplistmap是通过“跳表”来实现并发。

 

  数据结构对比

  jdk 1.8之前,hashmap的底层是数组和链表结合使用,可以说其结构是单向链表构成的数组,即链表散列,又称拉链法,即数组中的每一个序列空间代表一链表,若在插入新元素时,如果哈希冲突,则将新的元素插入到冲突的序列空间的链表头部

  

 

 

 

    jdk 1.8之后,hashmap的底层是数组链表和二叉树结合使用,

 

 

  思绪有点乱,明天理清,继续完成,未完...

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网