HashMap\LinkedHashMap\TreeMap实现原理和速率比较【超简洁版本】

深度解各类Map的内部实现结构

1、创建实例

 

2、查看源码

HashMap

每个Map里面都有若干个Node的类对象,Node实现的就是键-值对,每当加入一个Node时,通过hash获得hash值,并且HashMap维护着一个List用来存储每个Node。

插入时,通过下图来确定索引值,同时每个node都有一个next的属性,需要注意的是HashMap可以加入TreeMap插入方式和TreeMap插入方式相同。

 

TreeMap

用二叉树实现,具有就不赘述

 

LinkedHashMap

链表加二叉树的方式进行实现,在HashMap的基础上增加了下面几个属性头部和尾部结点以及before和after结点。

HashMap\LinkedHashMap\TreeMap实现原理和速率比较【超简洁版本】_第1张图片

 

3、运行比较

第一次数据

第二次数据

第三次数据

第四次数据

 

4、总结比较

HashMap在增加数据上性能优越,linkedhashmap在增加数据上一样不错,同时删除数据和查询上更加优秀,treemap在两种都不太好。因此,在数据增删改动较大的情况下建议使用hashmap,在查阅较多的情况下建议使用linkedhashmap。

你可能感兴趣的:(学习,java,读书笔记)