gpt4 book ai didi

java - 具有多个整数值的键的良好哈希码和等于实现

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:22:34 24 4
gpt4 key购买 nike

我的 hashmap 具有这样的键:'2+4+5'、'653+65+1324+75'。(由 + 号分隔的整数值)

什么可以是一个好的哈希码和 equals 方法,以便像“2+4+5”、“5+4+2”、“4+5+2”这样的键......(2,4 的所有排列,5) 应返回相同的哈希码值,而 equals 应返回 true。

我打算获取键中的整数值,对它们进行排序,将它们按升序放入一个字符串中,然后调用该字符串的 hashcode 和 equals 方法。假设如果我有“5+2+4”,那么我会将其更改为“245”并调用字符串哈希码和 equals 方法。但这将是一项昂贵的操作,因为每次我都必须进行排序。而 hashmap 中的所有方法,如 put、get... 将再次变得昂贵

是否有任何其他方法可以在日志或线性时间内执行此操作...

最佳答案

一个好的哈希码算法应该为输入的细微差别返回非常不同的哈希值。在您的情况下,您还认为值的排列是“相等的”。

似乎一个好的方法是解析组成的整数然后对它们进行排序(一种确保比较顺序一致的简单方法)然后:

如果两个值具有相同的排序成分数,则认为它们相等。

使用经过验证的散列方法,例如

hash = value1 + 31 * value2 + 31 * 31 * value3 + 31 * 31 * 31 * value4 + etc.

关于java - 具有多个整数值的键的良好哈希码和等于实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10289326/

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