前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java集合---HashMap(6)

Java集合---HashMap(6)

作者头像
兜兜毛毛
发布2019-10-23 15:54:24
3720
发布2019-10-23 15:54:24
举报
文章被收录于专栏:兜兜毛毛兜兜毛毛

用途与特点

存储Key—value形式数据,在JDK1.7时撞库使用链表,在1.8中对HashMap撞库情况进行优化,使用链表与红黑树对撞库进行优化

ps: 红黑树还没整明白为什么会自动平衡,所以暂时略过讲解,之后补充。

实现算法

HashMap的底层实现方式其实就是Node<K,V>[]数组实现,

  • Node<K,V>[] table存放具体数据
  • Set<Map.Entry<K,V>> entrySet存放keySet
  • size存放实际数据大小。

默认初始数组长度是16,默认扩展扩容是在数组长度16*0.75=12时进行扩容。

扩容机制

扩容时机:是在加入数据时,(数组长度16*0.75=12)大于12时进行扩容

扩充的新数组长度是: 数组长度16*0.75=12

是否线程安全,为什么?

非线程安全,未对数据的添加、删除、读取等做锁操作

参考:

30张图带你彻底理解红黑树

二叉树是自顶向下生长 红黑树是自底向上生长

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档