Golang - Map底层实现

底层结构

  • 使用哈希表作为底层实现
  • 一个哈希表里可以有多个哈希表节点,也叫bucket(哈希桶)
  • 每个bucket就保存了map中的一个或一组键值对

哈希冲突

  • 当有两个或以上数量的键被哈希到了同一个bucket时,就称这些键发生了冲突
  • Go使用链地址法来解决键冲突【具体操作就是插入key到map中时,当key定位的桶填满8个元素后,将会创建一个溢出桶,并且将溢出桶插入当前桶的所在链表尾部
  • 由于每个bucket可存放8个键值对,所以同一个bucket存放超过8个键值对时就会再创建一个键值对,用类似链表的方式将bucket连接起来
posted @ 2022-05-13 11:30  李若盛开  阅读(87)  评论(0)    收藏  举报