HashMap集合的底层原理
HashMap跟HahSet的底层原理是一模一样的,都是基于哈希表实现的。
实际上:原来学的Set系列集合的底层就是基于Map实现的,只是Set集合中的元素只要键数据,不要值数据而已。
public HashSet(){
map = new HashMap();
}
JDK8之前,哈希表=数组+链表;
JDK8开始,哈希表=数组+链表+红黑树
哈希表是一种增删改查数据,性能都较好的数据结构;
HashMap的键依赖hashCode方法和equals方法保证键的唯一
存储数据时hashCode()的作用,当hashMap中添加一个新的键值对时,HashMap会首先调用键的hashCode()方法来计算该键的哈希值,这个哈希码被用来确定该键值对在哈希表中的位置
如果该位置有其他的键值对,比较新的键值对与已有键的相等性时,就会使用equals()方法,如果新键与旧键相等,则更新该键对应的值;如果不相等,则将新键值对添加到位置的链表或红黑树中。
如果键存储的是自定义类型的对象,可以通过重新hashCode和equals方法,这样可以保证多个对象内容一样时,HashMap集合就能认为是重复的