【发布时间】:2014-06-03 03:19:04
【问题描述】:
最近遇到一段代码,其中Map<Integer, String>被使用,其中Integer(key)是某个字符串的hashCode,而String的值与之对应。
这是正确的做法吗?因为现在,在调用get 时,不会为String 调用equals。 (get 也是在 String 对象上使用 hashCode() 方法完成的。
或者,hashCode(s) 对于唯一字符串是唯一的?
我检查了equals od String 类。有为此写的逻辑。我很困惑。
【问题讨论】:
-
这是没用的,字符串的哈希值不是唯一的
-
这样做当然是错误的; equals/hashCode合约规定两个相等的对象必须有相同的hashcode,但不保证两个不相等的对象一定有不同的hashcode。
-
所以,我是对的。 :)
-
快速问题@Batty - 有多少不同的
String值?以及hashCode的String可以取多少个不同的值?