聊城做网站的公司精英,青岛哪个网站建设公司价格低还能好一些,网站开发源代码 百度文库,南京网站建设索q.479185700文章底部有个人公众号#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享#xff1f; 踩过的坑没必要让别人在再踩#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 面试官#xff1a;JDK7和JDK8中的HashMap有… 文章底部有个人公众号热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享 踩过的坑没必要让别人在再踩自己复盘也能加深记忆。利己利人、所谓双赢。 面试官JDK7和JDK8中的HashMap有什么区别
参考答案
JDK7中的HashMap是基于数组链表来实现的它的底层维护一个Entry数组。它会根据计算的hashCode将对应的KV键值对存储到该数组中一旦发生hashCode冲突那么就会将该KV键值对放到对应的已有元素的后面 此时便形成了一个链表式的存储结构。
JDK7中HashMap的实现方案有一个明显的缺点即当Hash冲突严重时在桶上形成的链表会变得越来越长这样在查询时的效率就会越来越低其时间复杂度为O(N)。
JDK8中的HashMap是基于数组链表红黑树来实现的它的底层维护一个Node数组。当链表的存储的数据个数大于等于8的时候不再采用链表存储而采用了红黑树存储结构。这么做主要是在查询的时间复杂度上进行优化链表为O(N)而红黑树一直是O(logN)可以大大的提高查找性能。