Golang关于HashMap的解析
开门见山,进入正题
HashMap的介绍
hashMap在程序开发中用的还是很多的,一般都会用到。在做映射的时候还是很方便,那么在golang中是怎样实现的呢?
首先,我们知道Map是由KEY和Value(键值对)组成,且MAP通过桶(bucket)来存储键值对,那么其是通过什么规律来存储的呢?
一、键值对存储规则
他是怎么知道我们的某一个键值对是放到哪个桶里的呢?
1、首先会先通过hash函数获得key的hash值;
2、通过对key的hash值进行计算得到存入的桶的地址并进行存储,目前有两种得到桶地址的方式:
取模法: key-hash / m(桶的个数) ,
与运算法:key-hash & (m-1) (m为桶的个数)
通过两种方式来确认放入到哪个桶中。
目前基本上都是按照与运算法来确认放入到哪个桶;因为通过与运算法可以确保所有桶都有键值对落入。
问:为什么与