Java string.hashcode()提供不同的值 - java

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

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():

类Object的toString方法返回包含以下内容的字符串:
对象是实例的类的名称,符号
字符“ @”以及哈希的无符号十六进制表示形式
对象的代码。换句话说,此方法返回的字符串等于
值:
getClass()。getName()+'@'+ Integer.toHexString(hashCode())

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

测试hashCode的字符串 - java

我正在编写如下所示的代码:String s1=new String("hi"); System.out.println(s1.hashCode()); String s2=new String("hi"); System.out.println(s2.hashCode()); String s3=s1.intern()…

Java:找到特定字符并获取子字符串 - java

我有一个字符串4.9.14_05_29_16_21,我只需要获取4.9。数字各不相同,所以我不能简单地获得此char数组的前三个元素。我必须找到最正确的.并将其子字符串化直到那里。我来自Python,因此我将展示Python的实现方法。def foobar(some_string): location = some_string.rfind('.&…

Java swing-事件触发后,我可以在选项卡上更改名称吗? - java

一,代码:tab_textArea_file.addTab(docLabel, null, scrollPane_textArea, null); 因此,情况是我有一个可供用户选择的文件列表。用户单击文件时,将读取文件的内容并将其加载到textArea中。 “ docLabel”(在上面的代码中)是应该更改为所选文件名的字符串,但并非如此。是否可以通过上面的…

当我们在字符串上调用toString时,它会创建一个新对象吗? - java

我在和朋友讨论String时,才知道在String上调用toString()会创建新对象吗?但是,即使我的朋友也不知道原因。谁可以给我解释一下这个? 参考方案 javadoc状态 该对象(已经是一个字符串!)本身会返回。因此,不,它不会创建新对象。而是返回对同一对象的引用。它可以(并且被)实现为public String toString() { retur…

如何从包含文本的HTML页面转换为JSON - java

假设我在HTML页面中通过TextArea输入了文本。如何使用Eclipse将其转换为JSON形式?我使用TextArea输入的字符串的示例是对于AWSDataTransfer产品,这是公共定价计划。关于跨EC2可用区的数据传输:在所有AWS地区,入站费用均为$ 0.01 / GB。在所有AWS地区,出站费用为$ 0.01 / GB。 参考方案 我想“ Ec…