Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-新的hashCode方法_Java_Hashcode - Fatal编程技术网

Java-新的hashCode方法

Java-新的hashCode方法,java,hashcode,Java,Hashcode,对于长度为500的数组,我应该对hashCode()方法进行几处更改以覆盖它。 每个数组索引(例如数组[499])必须正好包含35512对象 我使用长度为6的字符串,比如:“character number”(例如“ABX015”)。我必须为每个类似的字符串(从“AAA000”到“ZZZ999”)编写一个hasdcode方法 我写道: public int hashCode() { return ((Math.abs(myStringName.hashCode()) %499); } 唯一的问

对于长度为500的数组,我应该对hashCode()方法进行几处更改以覆盖它。 每个数组索引(例如数组[499])必须正好包含35512对象

我使用长度为6的字符串,比如:“character number”(例如“ABX015”)。我必须为每个类似的字符串(从“AAA000”到“ZZZ999”)编写一个hasdcode方法

我写道:

public int hashCode() {
return ((Math.abs(myStringName.hashCode()) %499);
}
唯一的问题是,根据我使用的索引,我得到了不同的值

你能帮我吗


谢谢

所以您正在散列以3个字母开头、以3个数字结尾的6字符字符串值。您希望为所有17576000个可能的组合创建一个散列,并使它们介于0和499之间,并且所有的散列都在这个散列范围内均匀分布。您需要它,以便可以创建一个大小为500的数组来计算碰撞。您期望的是数组[*]=35152(自17576000/500=35152起)

我理解正确吗

不管是哪种方式,我想到了一个简单的解决方案:

@Override
public int hashCode() {
    int num = Integer.valueOf(myStringName.substring(3));
    return num / 2;
}

知道最后三个是0-999。只需将其除以2,并将其用作哈希。

我无法理解这一点。“每个数组索引必须正好包含35512对象”是什么意思?或者是其他的,就这点而言。它是一个包含长度为500的字符串数组的类,每个字符串的长度为6,包含三个字母和三个数字吗?无论您选择0到499之间的哪个索引,我都应该具有相同的值(例如数组[399]=35512)。我必须将17576000个可能性分离到500个列表中(我只使用choose索引中add数为的数组(例如array[325]=35400)这样一个数组的用途可能是什么?在任何情况下,35512不是对象,而是int,并且不能重写hashCode()数组的方法。其目的是将17576000个可能性分成500个列表,但将35512分为一个列表。hashcode提供了arrayIndex,我必须在其中放置字符串,如下所示:但对于35512对象,对象是字符串,格式与我解释的相同