gpt4 book ai didi

Java string.hashcode() 给出不同的值

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

我已经被这个问题困扰了几个小时了。我已经注释掉了所有代码,认为这与数组越界有关,但这种情况仍然发生。我正在尝试使用扫描仪从文件中读取输入,存储数据并稍后使用哈希码获取该数据。但哈希值不断变化。

public static void main(String[] args)
{
//only prior code is to access data
char arr[] = new char[25];
arr = readString.toCharArray();
int y;
y = hash(arr);
}

public static int hash(char[] arr)
{
int get = arr.toString().hashCode();
System.out.println(y);
return get;
}

对于文件来说,即使每一行都有相同的内容,仍然存在这个问题
例如
你好
你好
你好

我已经注释掉了除获取数据并对其进行散列之外的所有其他函数,但不确定为什么散列码具有不同的值。我是否错误地使用了哈希码?还有其他方法可以做到这一点吗?

编辑* 当我在主函数内散列字符串时,值始终相同,但我检索的值从来都不相同。

最佳答案

问题出在这一行:

   int get = arr.toString().hashCode();

您期望 arr.toString() 返回 char[] 中的字符串。事实并非如此。

来自Object.toString() :

The toString method for class Object returns a string consisting of the name of the class of which the object is an instance, the at-sign character `@', and the unsigned hexadecimal representation of the hash code of the object. In other words, this method returns a string equal to the value of: getClass().getName() + '@' + Integer.toHexString(hashCode())

因此 arr.toString() 返回类似“[C@3e25a5”的内容,其值每次都会改变,其 hashCode() 也会随之改变。

关于Java string.hashcode() 给出不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10389494/

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