HashMap(一)基础入门 了解其数据结构和哈希

1.数组的优势/劣势

HashMap(一)基础入门 了解HashMap数据结构和哈希的概念

优势:查询快。数组的内存是连续的,每一块空间是一样大的,从结构上可以看到优点就是索引快,从下标0,1,2,3……就可以查询到指定的内容

劣势:增删慢,如果增加时内存不足还要进行扩容,删除大部分时候要进行数组的拼接,比较麻烦。

2.链表的优势/劣势

HashMap(一)基础入门 了解HashMap数据结构和哈希的概念

链表不是连续的内存,每一块内存里面有一个引用,去保留下一个内存的地址。

优势:增删快,一般增加删除的时候只要把引用的修改就可以了

劣势:链表没有index,查询的时候要逐一对比,速度慢

3.有没有一种方式整合两种数据结构的优势?

答案就是散列表

HashMap(一)基础入门 了解HashMap数据结构和哈希的概念

4.散列表有什么特点?

散列表就是在数组的内存中存放链表,这样就可以结合数组和链表的优势,根据index快速查询,根据链表可以动态的扩容的优势,增删也快。

5.什么是哈希?

Hash也称散列、哈希,对应的英文都是Hash,基本原理就是把任意长度的输入,通过Hash算法变成固定长度的输出。
这个映射的规则就是对应的Hash算法,而原始数据映射后的二进制串就是哈希值。

Hash的特点:

1.从hash值不可以反向推导出原始的数据
2.输入数据的微小变化会得到完全不同的hash值,相同的数据会得到相同的值
3.哈希算法的执行效率要高效,长的文本也能快速地计算出哈希值
4.hash算法的冲突概率要小

由于hash的原理是将输入空间的值映射成hash空间内,而hash值的空间远小于输入的空间。
根据抽屉原理,一定会存在不同的输入被映射成相同输出的情况。

抽屉原理:桌上有十个苹果,要把这十个苹果放到九个抽屉里,无论怎样放,我们会发现至少会有一个抽屉里面放不少于两个苹果。
要把这十个苹果放到九个抽屉里,无论怎样放,我们会发现至少会有一个抽屉里面放不少于两个苹果。
这一现象就是我们所说的“抽屉原理"。也就是说在散列表中的数组至少一个内存块会有重复的哈希值

点击查看下一篇,我将带你了解HashMap的底层源码

相关文章: