看啥推荐读物
专栏名称: java一日一条
主要是讲解编程语言java,并且每天都推送一条关于java编程语言的信息
今天看啥  ›  专栏  ›  java一日一条

HashMap在Java1.7与1.8中的区别

java一日一条  · 公众号  · Java  · 2019-03-23 17:40
基于JDK1.7.0_80与JDK1.8.0_66做的分析 JDK1.7中使用一个Entry数组来存储数据,用key的hashcode取模来决定key会被放到数组里的位置,如果hashcode相同,或者hashcode取模后的结果相同(hash collision),那么这些key会被定位到Entry数组的同一个格子里,这些key会形成一个链表。在hashcode特别差的情况下,比方说所有key的hashcode都相同,这个链表可能会很长,那么put/get操作都可能需要遍历这个链表也就是说时间复杂度在最差情况下会退化到O(n) JDK1.8中使用一个Node数组来存储数据,但这个Node可能是链表结构,也可能是红黑树结构如果插入的key的hashcode相同,那么这些key也会被定位到Node数组的同一个格子里。如果同一个格子里的key不超过8个,使用链表结构存储。如果超过了8个,那么会调 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照