【发布时间】:2014-07-23 15:36:55
【问题描述】:
我有一个
HashMap<String,AnObject>
我想从 AnObject 值包含的一些信息中为字符串键提供一个值。 假设 AnObject 是这样制作的:
public class AnObject(){
public String name;
public String surname;
}
将密钥分配给:
String.valueOf(o.name.hashcode()+o.surname.hashcode());
?或者有没有更好的方法从值列表中计算字符串哈希码?
【问题讨论】:
-
如果用于构造键的字段始终是唯一的,那么您就可以了。
-
@Kyte:这根本不是真的。如果您真的希望我可以找到具有相同哈希码的不同字符串的示例...
-
@Kyte 他们很容易故意找到。只需散列 2^32 个字符串。在现代计算机上散列 2^32 个短字符串最多需要一个小时,而且可能要少得多(即分钟)
-
@Kyte:“稀有”和“从不”不是一回事。哈希码根本不是一个合适的键,您声称不同的字符串将导致不同的哈希是不正确的。我们不知道该密钥将用于什么 - 想象一下这是否是一种查找私人信息的方式;使用哈希很容易成为一个非常重要的安全漏洞。
-
@Kyte,字符串“FB”和“Ea”具有相同的哈希码,而且还有很多类似的。
标签: java