我有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添加新的
请帮我解决这个问题 感谢
答案 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()