liuxiaoming的gravatar头像
liuxiaoming 2018-08-16 17:38:47
java hashmap源码分析和hashset

hashmap源码分析(20180816)

这几天想分析java源码了,或者学习无聊了。

hashmap别人分析的我就不说了。发现hashmap一个优秀的点:如何更快的get(key)

首先hashmap存储是数组,【149】transient Entry[] table(1);

取值的方法

java hashmap源码分析和hashset

注意,并不是遍历所有的数组,而是定位到数组指定位置。hashmap有自己的算法,存取的时候,

java hashmap源码分析和hashset

由于算法太难,我解释不清楚。推荐访问(https://blog.csdn.net/lyandyhk/article/details/51147012)。

注意,通过上文解释,有些时候 indexFor(int h, int length)会同值。此时 entry.next 就有用了。

java hashmap源码分析和hashset

 

hashset源码分析(20180817)

由于hashset源码太简单,完全是限制版的hashmap,不单独做一个博客。

hashmap的key就是hashset的值。hashmap的value几乎没用,都是写死的值。

java hashmap源码分析和hashset

注意:hashset没有get值的方法,仅仅是一个存储集合。

备注:(1)、transient作用是反序列化的。


打赏
最近浏览
liuxiaoming  LV5 2018年8月20日
最代码官方  LV167 2018年8月17日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友