什么是hash
比较官方的解释是将任意长度数据映射到到固定长度的域中。
例如我们要将1~100编号的苹果放在10个篮子中,怎么做才能尽可能均匀地分散这100个苹果,使得每个篮子苹果个数大致相当。最简单的办法就是通过模运算来解决,把每一个苹果的编号num对篮子数n进行取模得到该苹果要放入篮子的编号index,即index=num%n。这样,可以保证每个篮子都将放入10个苹果。
hash在Map中的应用
HashMap的底层是HashTable,通过Node[]进行数据存储;每一个Node是一个key-value键值对,在进行Node存放,即确定节点在Node[]中的存储index时,采用了Hash散列的思想。由于Hash散列的随机性,有时候会出现不同Node同一index的情况,这时候HashMap采用了同一index处采用链表的形式来存储相同index的不同Node。
HashMap所在包
HashMap位于java.util包下,使用它必须导包。
HashMap构造函数
HashMap有4个构造函数,源码如下:
1 | /** |
一般情况下,我们默认使用空参构造函数,只有在特殊情况需要调节HashMap性能时会使用包含initialCapacity或loadFactor含参构造函数。