栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

分布式哈希表(生成哈希值)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

分布式哈希表(生成哈希值)

哈希表、哈希集合、哈希映射

哈希表

哈希表的原理 哈希集合-HashSet哈希映射键 的 设计

哈希表

哈希表 是一种 使用 哈希函数 组织数据,以支持 快速插入和搜索 的 数据结构

有两种不同类型的哈希表:哈希集合和哈希映射

哈希集合 是 集合数据结构的实现之一,用于存储非重复值哈希映射 是 映射数据结构的实现之一,用于存储(key, value)键值对

通过选择合适的哈希函数,哈希表可以在插入和搜索方面实现出色的性能

阅读参考:
https://leetcode-cn.com/leetbook/read/hash-table/x6sast/

哈希表的原理

哈希表的关键思想 是 使用 哈希函数 将 键 映射到 存储桶。更确切地说
当插入一个新的键时,哈希函数 将决定 该键 应该分配到 哪个桶中,并将该键存储在相应的桶中
当想要搜索一个键时,哈希表 将使用 相同的哈希函数 来查找 对应的桶,并只在特定的桶中进行搜索

在设计哈希表时,应该注意两个基本因素,一个是哈希函数、一个是键冲突
冲突解决算法应该解决以下几个问题:

如何组织在同一个桶中的值?如果为同一个桶分配了太多的值,该怎么办?如何在特定的桶中搜索目标值?

通常,如果 N(一个桶中键的最大数) 是常数且很小,可以简单地使用一个数组将键存储在同一个桶中。如果 N 是可变的或很大,可能需要使用高度平衡的二叉树来代替

阅读参考:
https://leetcode-cn.com/leetbook/read/hash-table/xht3is/
https://leetcode-cn.com/leetbook/read/hash-table/xh8uld/

哈希集合-HashSet

哈希集是集合的实现之一,它是一种 存储 不重复值 的 数据结构
插入新值 并 检查 值 是否在哈希集中 是 简单有效的,通常使用 哈希集 来检查 该值是否已经出现过

阅读参考:
https://leetcode-cn.com/leetbook/read/hash-table/xhge27/
https://leetcode-cn.com/leetbook/read/hash-table/xhzxa5/

哈希映射

哈希映射 是用于 存储 (key, value) 键值对 的 一种实现
使用哈希映射的第一个场景是,需要更多的信息,而不仅仅是键。然后 通过 哈希映射 建立 密钥 与 信息之间 的 映射关系

在某些情况下,需要更多信息,不仅要返回更多信息,还要帮助做出决策,当遇到重复的键时,将立即返回相应的信息。但有时,可能想先检查键的值是否可以接受

另一个常见的场景是按键聚合所有信息。也可以使用哈希映射来实现这一目标,解决此类问题的关键是 在遇到 现有键时 确定策略

阅读参考:
https://leetcode-cn.com/leetbook/read/hash-table/xhy35e/
https://leetcode-cn.com/leetbook/read/hash-table/xhcuhg/

键 的 设计

设计 关键是在 原始信息 和 哈希映射 使用的 实际键之间 建立映射关系
设计键时,需要保证:

属于同一组的所有值都将映射到同一组中需要分成不同组的值不会映射到同一组

此过程类似于设计哈希函数,但这是一个本质区别。哈希函数满足第一个规则但可能不满足第二个规则。但是映射函数应该满足它们

阅读参考:
https://leetcode-cn.com/leetbook/read/hash-table/xxez6m/
https://leetcode-cn.com/leetbook/read/hash-table/xxavl2/,这里有设计键的建议!!!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/776126.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号