HashMap源码详解与对比
程序员文章站
2023-02-18 18:46:14
前几天工作忙得焦头烂额时,同事问了一下关于Map的特性,刹那间懵了一下,紧接着就想起来了一些关于Map的一些知识,因为只要涉及到Collection集合类时,就会谈及Map类,因此理解好Map相关的知识是灰常重要的。 Collection集合类 与 Map类的层次结构,如下图: Map是用来存储 K ......
前几天工作忙得焦头烂额时,同事问了一下关于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的底层是数组链表和二叉树结合使用,
思绪有点乱,明天理清,继续完成,未完...
推荐阅读
-
Spring 事务隔离与事务传播的详解与对比
-
详解Python3之数据指纹MD5校验与对比
-
百度神卡和京东强卡哪个好?京东强卡与百度神卡套餐资费区别对比详解
-
i3-4160和i3-6100哪个好 i3 6100与i3 4160区别对比评测详解
-
iPad Air 2和iPad Mini 3哪个好?苹果iPad Air2与Mini3区别对比详解
-
HashMap源码详解与对比
-
PHP实现生成vcf vcard文件功能类定义与使用方法详解【附demo源码下载】 原创
-
B75主板与B85主板哪个好?主板B75和B85的区别对比详解
-
详解express与koa中间件模式对比
-
PHP生成二维码与识别二维码的方法详解【附源码下载】