HashMap数据结构

1.hashMap的数据结构:

哈希表:数组+链表

HashMap数据结构

2.哈希表是什么:

        又称为散列表,是将任意长度的输入通过散列算法变换成固定长度的输出,形成一种更加便捷的查找技术。特点:寻址容易,插入删除容易(链表是查找困难,插入删除容易)
3.哈希表生成过程:
        hashmap通过key的hashcode来计算hash值(将关键字通过hash函数转换成一个hash值),然后将该整数对数组长度进行取余运算,取余的结果就是数组的下标,将value存储在以数字为下标的无值数组空间里(有值此时将产生冲突)。
4.冲突解决方法:

  • 4.1开放地址法:

    当关键字key的哈希地址出现冲突时,以p为基础,产生另外一个哈希地址p1,如果p1再产生冲突,产生另一个hash表p2。

  • 4.2再哈希法:

    这种方法是同时构造多个不同的哈希函数

  • 4.3链地址法:

    将所有产生冲突的元素生成一个同义词连的单链表,将冲突关键字以链表的形式放在已有冲突字段后面,查找时候通过比较冲突字段进行确认 。
5.hashcode详解:
    每个对象都有hashcode,hashcode相同,两个对象不一定相同。

  • equals方法和hashcode比较:

    比较两个数是否相等,先比较hashcode,在通过equals比较
    equals方法重写的话,建议也一起重写hashcode方法