有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

为什么java字符串哈希代码在不同但相似的geohash字符串上有很多冲突?

Geohash字符串是我的稀疏逻辑回归模型中的一个特性。所以我使用java字符串hashCode在geohash字符串上生成int值,以获取特征id。但我发现hashCode方法在类似的geohash字符串上表现不佳。这会导致不同的特征具有相同的特征id,即使特征相似,也可能不利于模型优化。 例如,那些相似的geohash字符串对具有相同的哈希代码

<"wws8vw", "wws8x9">
    "wws8vw".hashCode() = -774715770
    "wws8x9".hashCode() = -774715770
<"wmxy0", "wmxwn">
    "wmxy0".hashCode() = 113265337
    "wmxwn".hashCode() = 113265337

我猜geohash生成器方法和java hashCode方法之间有某种关系。那么,谁能给我解释一下真正的原因,以及如何减少geohash字符串上的冲突


共 (1) 个答案

  1. # 1 楼答案

    我认为您误解了^{} method的目的——不是一般的哈希,而是Java对象使用这种方法的原因:

    This method is supported for the benefit of hash tables such as those provided by HashMap.

    因此,如果你试图使用这种方法作为机器学习模型的输入,那么你并没有将其用于预期目的

    答案相当明显:您需要设计自己的散列方法——或者选择一个预先存在的方法——为您的预期输入提供所需的冲突配置文件。你不能更改String.hashCode()使用的那个