深度解各类Map的内部实现结构
1、创建实例
2、查看源码
HashMap
每个Map里面都有若干个Node的类对象,Node实现的就是键-值对,每当加入一个Node时,通过hash获得hash值,并且HashMap维护着一个List用来存储每个Node。
插入时,通过下图来确定索引值,同时每个node都有一个next的属性,需要注意的是HashMap可以加入TreeMap插入方式和TreeMap插入方式相同。
TreeMap
用二叉树实现,具有就不赘述
LinkedHashMap
链表加二叉树的方式进行实现,在HashMap的基础上增加了下面几个属性头部和尾部结点以及before和after结点。
3、运行比较
第一次数据
第二次数据
第三次数据
第四次数据
4、总结比较
HashMap在增加数据上性能优越,linkedhashmap在增加数据上一样不错,同时删除数据和查询上更加优秀,treemap在两种都不太好。因此,在数据增删改动较大的情况下建议使用hashmap,在查阅较多的情况下建议使用linkedhashmap。