【Java 数据结构 & 算法】宁可累死自己, 也要卷死别人 9 哈希表原理

举报
我是小白呀iamarookie 发表于 2021/12/15 22:41:49 2021/12/15
【摘要】 【Java 数据结构 & 算法】⚠️宁可累死自己, 也要卷死别人 9⚠️ 哈希表原理 概述哈希表哈希函数 概述 从今天开始, 小白我将带大家开启 Java 数据结构 & 算...

【Java 数据结构 & 算法】⚠️宁可累死自己, 也要卷死别人 9⚠️ 哈希表原理

概述

从今天开始, 小白我将带大家开启 Java 数据结构 & 算法的新篇章.

在这里插入图片描述

哈希表

哈希表 (Hash Table), 是根据关键码值 (Key Value) 直接进行访问的数据结构. 哈希表通过把键 (key) 映射到表中一个位置来访问记录, 以加快查找的速度. 如图:

在这里插入图片描述
这个映射函数叫做散列函数, 存放的记录叫做散列表. 哈希表体现了算法设计领域中空间换时间的思想.

哈希函数

哈希函数 (Hash Function) 又称散列算法, 哈希函数. 哈希函数通过将任意长度的输入值转变成固定长度的值输出.在这里插入图片描述

设计哈希函数的原则:

  1. 一致性: 如果 a==b, 那么 hash(a) == hash(b)
  2. 高效性: 哈希函数的计算要简单高效
  3. 均匀性: 尽可能地让哈希值均匀分布

在这里插入图片描述
哈希函数处理数据的方法:

  1. 小整数
    • 正整数: 直接使用
    • 负整数: 偏移成正整数再使用
  2. 大整数
    • 取部分: 取大整数后 n 位
    • 对 m 取模: 通常对质数取模
  3. 浮点型
    • java 中使用 float 和 double 来表示浮点数
    • 遵循哈希函数设计将浮点型转换成整型
  4. 字符串
    • 将字符串类型转换为整型处理, 将字符串类型看做 26 进制数表示
    • 计算出字符串对应的哈希值后, 对一个质数 M 取模得到哈希函数
  5. 引用类型
    • 引用类型可以直接套用字符串的哈希函数, 求得 hash 值

文章来源: iamarookie.blog.csdn.net,作者:我是小白呀,版权归原作者所有,如需转载,请联系作者。

原文链接:iamarookie.blog.csdn.net/article/details/121943772

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。