gpt4 book ai didi

java - 将长整型标识符均匀分布到桶中

转载 作者:行者123 更新时间:2023-12-02 02:33:57 24 4
gpt4 key购买 nike

我有一大堆长整型标识符,需要尽可能均匀地分布到 (n) 个桶中。长整数标识符可能有一些丢失的标识符。以此为标准,按原样使用长整数和执行模 (n) [长整数] 之间是否有区别,或者最好为长整数的字符串版本生成 hashCode(以改善分布)然后做模(n)[字符串的哈希码(长整数)]?是否需要额外的字符串转换才能通过哈希码获得统一的传播?

自从我收到反馈说我的问题没有足够的背景信息。我正在添加更多信息。

标识符基本上是自动递增的数字行标识符,在表示项目 ID 的数据库中自动生成。部分标识符丢失的原因是删除。

标识符本身是长整数。标识符(项目)本身在某些情况下约为(10s-100)+百万,在某些情况下约为数千。

只有在标识符数量级为数百万的情况下,我才真正希望将它们分散到存储桶中(标识符计数 >> 存储桶计数)以存储在非 SQL 系统(分区)中。

我想知道,由于项目被删除,我是否应该求助于 (Long).toString().hashCode() 来获得统一的分布,而不是直接使用长数字。我有一种感觉,做一个 toString.hashCode 不会让我太着迷,而且我也不喜欢 java hashCode 不能保证跨 java 版本的相同值(尽管对于 String 来说,它们的 hashCode 实现似乎有记录并且稳定)对于过去几年的版本)

最佳答案

不需要涉及String

new Integer(i).hashCode()

...为您提供一个哈希 - 旨在均匀分布到存储桶中。

new Integer(i).hashCode() % n

...将为您提供一个您想要的范围内的数字。

<小时/>

但是 Integer.hashCode() 只是:

 return value;

因此 new Integer(i).hashCode() % n 相当于 i % n

关于java - 将长整型标识符均匀分布到桶中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46671124/

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