Java—HashMap

一、哈希表?

哈希表是基于数组的一种存储方式.它主要由哈希函数数组构成。

当要存储一个数据的时候,首先用一个函数计算数据的地址,然后再将数据存进指定地址位置的数组里面。这个函数就是哈希函数,而这个数组就是哈希表

哈希表的优势在于:相比于简单的数组以及链表,它能够根据元素本身在第一时间,也就是时间复杂度为 0(1) 内找到该元素的位置。这使得它在查询和删除、插入上会比数组和链表要快很多。因为他们的时间复杂度为o(n)

二、哈希冲突

哈希冲突是指哈希函数算出来的地址被别的元素占用了,也就是,这个位置有人了。好的哈希函数会尽量避免哈希冲突。而解决哈希冲突的办法之一就是开放定址法(发生冲突,继续寻找下一块未被占用的存储地址),再散列函数法,链地址法。

三、HashMap原理

哈希函数用的就是链地址法,也就是数组+链表的方法,hashMap用的就是链地址法
链地址法就是,当没有发生哈希冲突的时候hashmap主要只有数组。但是当发生冲突的时候,它会在哈希函数找到的当前数组内存地址位置下添加一条链表。

posted @ 2021-11-29 17:35  光一  阅读(24)  评论(0编辑  收藏  举报