java中的hashmap键值

时间:2012-02-04 19:17:28

标签: java hashmap

我有2个对象创建为

final VideoObj v1 = new VideoObj("A", 2000, "B");
final VideoObj v1copy = new VideoObj("A", 2000, "B");

我使用如下的哈希映射

private final Map<Video, Record> _data = _data = new HashMap<Video, Record>();

是v1被添加到视频记录是由1个whihc在Record类中,

哈希映射如何知道这是相同的密钥,因为我添加了v1 1st而记录是1然后我添加了v1copy然后记录是2.为什么它变为2而不是为v1copy添加新的

请帮我解决这个问题 感谢

2 个答案:

答案 0 :(得分:2)

我甚至不确定你在问什么,这个解释有用吗?

HashMap基于equals()hashCode()方法比较对象,默认情况下这些检查对象标识,因此v1和v1copy不会被视为相同,除非您覆盖{类hashCode()中的{1}}方法。

答案 1 :(得分:1)

你是否重写了VideoObj类中的equals()方法?它是否根据三个参数构造函数检查是否存在相等性?您可能想要查看此http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#hashCode()