最近,我遇到了一段代码,在哪里Map<Integer, String>使用,其中Integer(key)是hashCode一些字符串和String值对应的.
这是正确的做法吗?因为现在,equals调用String时不会被调用get.(get也是hashCode()在String对象上使用方法完成的.
或者,hashCode(s)对于唯一的字符串是唯一的吗?
我检查了equalsod String类.有为此写的逻辑.我很迷惑.
JB *_*zet 10
HashMap 确实用于equals()比较键.它仅用于hashCode()查找密钥所在的桶,从而大大减少要与之比较的密钥数量equals().
显然,hashCode()不能产生唯一值,因为int限制为2 ^ 32个不同的值,并且存在无限可能的String值.
总之,结果hashCode()不适合a的关键Map.
| 归档时间: |
|
| 查看次数: |
2550 次 |
| 最近记录: |