千锋教育Java入门全套视频教程(java核心技术,适合java零基础,Java

一、HashMap的定义
HashMap的底层原理使用的是数组,它是通过我们存入的key值获取到一个hash值,经过计算之后,获取到一个数组角标,然后将key值和value值封装到一个Entry里面,然后存入数组。需要注意的是当数组容量不够的时候,它会自动扩容一倍。
二、HashMap的初始化
1.空参构造器:创建HashMap不会开辟存放元素的空间,但是在第一次添加元素的时候,会开辟出一个16个空间的Node数组。
2.带参构造器: 创建HashMap不会开辟存放元素的空间,但是在第一次添加元素的时候,带参构造器的容量参数一定会去找离他向上最近的二的n次方的一个容量。
三、HashMap的使用注意事项
如果我们需要将对象中的内容当作比较依据的话,就必须要重写hashCode和equals方法。
让属性完全相同的对象,被map视为是同一个对象,那就需要重写hashCode,目的是让这样的对象在一个链表中==属性完全相同的两个对象的hashCode值是一样的。同时,还需要重写equals方法,在同一个链表中比较对象是否相同的依据是属性值是否完全相同。