发表于: 2018-04-08 23:50:56

1 639


今天完成的任务

1、Java 8的HashMap实现原理

昨天有提到,扯HashMap的实现原理的时候要先讲清楚版本。正好电脑上的JDk是1.8的,可以直接查看HashMap的源码。


到了Java 8,HashMap不再是单纯的数组+链表,而是数组+链表/红黑树。当链表长度超过8,链表会变成红黑树。


Java 7及以下7以下版本,HashMap的结构是 Entry<K,V>[] 数组;到了Java 8,为了方便把链表转成红黑树,HashMap结构改成 Node<K,V>[] 数组:


然后要注意的是新的put方法,我在网上看到的一张图,可以清楚的看到put方法的处理流程:


我比较感兴趣的是链表转成红黑树的源码:

上面的方法是把哈希表指定下标位置的链表转成红黑树(通过方法入参hash表示下标)。具体的转换方法则是 treeify(tab)方法:


遇到的问题

源码能看懂,但是说不出来


收获


明天的计划

1、第二次demo

2、改bug,争取周二上线


进度

明早10点半demo


返回列表 返回列表
评论

    分享到