基于hashmap源码学习的总结
1.了解其功能: 只有了解他的功能 才知道这个东西是干什么用的。
例:hashmap:存取删元素,key值不重复。
2.拆分其功能:对功能进行细分,才能阅读的量更小,才能更明确阅读目标,不跑偏看别的。
例:hashmap: put功能:拆分成计算hashcode及数组索引位功能、拆分成扩容功能、转化红黑树功能、拆分成插入功能等等
3.子功能的实现方式: 先弄清楚功能的实现原理,才能看代码时有大局观,对一些小的细节有的放 矢。
例:hashmap:put功能: 插入功能:通过计算hashcode值,再根据数据长度计算索引位置,若为空插入,不为空则判断是否是树节点,若是树节点则用红黑树方式解决冲突,否则是链表节点,遍历链表比较hashcode值是否一致,若一致key值一致或key一致内容也一致则覆盖 否则插入。插入若长度大于8 并且数组长度大于64则转化为红黑树。
即了解清楚了实现的原理 则看源码更有思路 更有针对性更加轻松 。
网友评论