Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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 HashMap密钥混淆_Java - Fatal编程技术网

Java HashMap密钥混淆

Java HashMap密钥混淆,java,Java,当我从HashMap中输出元素时,它们输出的结果非常奇怪。我如何看到HashMap的键按递增顺序排列,但为什么在410之后 @Override public int hashCode() { int hashCode = 0; for(Character character : string.toCharArray()){ hashCode += character; } return hashCode; } @Override public b

当我从HashMap中输出元素时,它们输出的结果非常奇怪。我如何看到HashMap的键按递增顺序排列,但为什么在410之后

@Override
public int hashCode() {
    int hashCode = 0;
    for(Character character : string.toCharArray()){
        hashCode += character;
    }
    return hashCode;
}

@Override
public boolean equals(Object obj) {
    if (this == obj) {
        return true;
    }
    if (!(obj instanceof StringFirstFourSymbolsHashCode)) {
        return false;
    }
    StringFirstFourSymbolsHashCode stringFirstFourSymbolsHashCode = (StringFirstFourSymbolsHashCode)obj;
    return string.equals(stringFirstFourSymbolsHashCode.string);
}
请解释它是如何工作的

尝试以下方法

> StringHashCodeLength HasMap Iterator
> StringFirstFourSymbolsHashCode{string='121,
> hashCode=148}=Product:name='prod1, cost='100500}
> StringFirstFourSymbolsHashCode{string='6442112,
> hashCode=356}=Product:name='prod3, cost='20500}
> StringFirstFourSymbolsHashCode{string='4562121,
> hashCode=357}=Product:name='prod4, cost='22500}
> StringFirstFourSymbolsHashCode{string='45631232,
> hashCode=410}=Product:name='prod2, cost='400500}
> StringFirstFourSymbolsHashCode{string='4321,
> hashCode=202}=Product:name='prod5, cost='1020}
private static final SortedMap FIRST\u FOUR\u symbol\u HASH\u code\u PRODUCT\u HASH\u MAP=
新的分类地图()

您只需使用SortedMap更改HashMap。

HashMap
根本不定义任何排序。如果需要按照条目插入的顺序返回条目,请改用。如果您需要按键值顺序返回条目,请使用任意实现。您可以等待条目按哈希代码排序,但这不会发生:1)当哈希表很小时,多个哈希代码的条目可以放在同一个bucket中;2) 为了决定一个条目应该在哈希表中占据哪个特定的单元格,需要对哈希代码进行额外的计算(例如,如果表大小为8,则
cell=hash%8
> StringHashCodeLength HasMap Iterator
> StringFirstFourSymbolsHashCode{string='121,
> hashCode=148}=Product:name='prod1, cost='100500}
> StringFirstFourSymbolsHashCode{string='6442112,
> hashCode=356}=Product:name='prod3, cost='20500}
> StringFirstFourSymbolsHashCode{string='4562121,
> hashCode=357}=Product:name='prod4, cost='22500}
> StringFirstFourSymbolsHashCode{string='45631232,
> hashCode=410}=Product:name='prod2, cost='400500}
> StringFirstFourSymbolsHashCode{string='4321,
> hashCode=202}=Product:name='prod5, cost='1020}
 private static final SortedMap<StringFirstFourSymbolsHashCode, Product> FIRST_FOUR_SYMBOLS_HASH_CODE_PRODUCT_HASH_MAP =
 new  SortedMap<StringFirstFourSymbolsHashCode, Product>()