gpt4 book ai didi

c# - 一种在不存储 key 的情况下将 key 存储在字典中的方法?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:45:00 24 4
gpt4 key购买 nike

比如写一个字典类,碰撞是很少见的,但确实存在。因此,您需要存储 key 以确保当您在哈希表中找到您的 key 时,它是正确的而不是冲突的。

有时键很长,而且通常是字符串,所以每个键可以超过 40 个字节,而如果它只是一个哈希码。如果存储的 key 是​​经过哈希处理的对象,但使用略有不同的哈希算法,具有不同的质数,会怎样?那么发生碰撞的几率就是 (1/(2^32)) * (1/(2^32))

您甚至可以使用另一种哈希算法并存储该哈希值,因此发生冲突的可能性为 (1/(2^32)) * (1/(2^32)) * (1/(2^32))。显然,冲突仍然可能发生,但几率非常低,而且您只需为 key 存储 4 个字节而不是超过 32 个字节,从而节省了如此多的内存。

我想这仍然是 Not Acceptable ,对吧,因为仍然有机会,但也有可能某人的 RAM 可能会不小心翻转一点和蓝屏,而且这看起来不太可能,所以不实现是很有诱惑力的。是否有任何替代方案或仍然不值得的小机会?

最佳答案

如果您想 100% 确定不存在任何冲突,则无法在插入之前检查 key 。话虽如此,我们在这里很幸运,因为实现良好的词典正是您快速找到 key 所需要的。

话虽如此,您可能想看一下描述的函数 here .碰撞几率会很低

编辑:删除了我写的关于 GUID 的一些废话...

关于c# - 一种在不存储 key 的情况下将 key 存储在字典中的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28840732/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com