Java HashMap密钥混淆
当我从HashMap中输出元素时,它们输出的结果非常奇怪。我如何看到HashMap的键按递增顺序排列,但为什么在410之后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
@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>()