HashMap底层实现采用了哈希表,这是一种非常重要的数据结构。
哈希表的基本结构就是“数组+链表”。
HashMap存储键值对的过程:
//测试简单的hash算法
public class TestEasyHash{
public static void main(String[] args){
int h = 25860339;
int length = 16;
myHash(h,length);
}
public static int myHash(int h,int length){
System.out.println(h&(length-1));
System.out.println(h%length);
return h&(length-1);
}
}
HashMap取键值对的过程:
1、获得key的hashcode,通过hash()散列算法得到hash值,进而定位到数组中的位置。
2、在链表上挨个比较key对象,调用equals()方法,将key对象和链表上所有结点的key对象进行比较,直到碰到返回true的结点对象为止。
3、返回equals()为true的结点对象的value对象。