我有大量的长整数标识符,需要尽可能均匀地分布到 (n) 个桶中。长整数标识符可能有一些丢失的标识符。以此为标准,按原样使用长整数和进行模(n)[长整数]之间是否有区别,或者为长整数的字符串版本生成hashCode更好(以改善分布)然后做一个模(n)[字符串的哈希码(长整数)]?通过哈希码获得统一传播是否需要额外的字符串转换?
由于我收到反馈说我的问题没有足够的背景信息。我正在添加更多信息。
标识符基本上是自动递增的数字行标识符,在表示项目 ID 的数据库中自动生成。缺少标识符的原因是由于删除。
标识符本身是长整数。标识符(项目)本身在某些情况下为 (10s-100)+ 百万,在某些情况下为数千。
只有在标识符数以百万计的情况下,我才想真正将它们分散到存储桶(标识符计数 >> 存储桶计数)中,以便存储在非 SQL 系统(分区)中。
我想知道是否因为项目被删除,我是否应该求助于 (Long).toString().hashCode() 来获得统一的传播而不是直接使用长数字。我有一种感觉,做一个 toString.hashCode 不会给我带来太多好处,而且我也不喜欢 java hashCode 不能保证在 java 修订中具有相同值的事实(尽管对于 String 他们的 hashCode 实现似乎有文档且稳定对于过去几年的版本)