我是java初学者,我有一个关于hashMap的问题
我有一个 Person 类:
`Person a=new Person(int id, String fullName, int age)`
我没有在这个类上定义 equals 和 hashCode() 。
假设我想在 hashMap 中存储 10 个人,定义为:
`Map<Integer,Person> hashMap=new HashMap<Integer,Person>();`
所以我将从数据库中获取人数,然后执行 for 循环:
`
String name="test"; int age="20";
for(int i=size;i<size+10;i++)
{
hashMap.put(Integer.valuesOf(i), new Person(i,name+"i",age++));
}`
我认为 hashMap 将使用 Integer 类的 hashCode(),我将获得一个唯一的哈希值,该哈希值将与 Person 对象一起存储在 hashMap 中, 如果我确定这个哈希值是唯一的,我不需要在对象上定义 hashCode() ,并且等于“否”?或者至少我需要定义相等,以便将来在两个人之间进行比较......
我错了吗?
HashMap
的
key需要实现一致的
hashCode
和equals
。并不是说 hashCode
不必是唯一的,但越接近它,您获得的性能就越好。 java.lang.Integer
已经实现了这两个。
HashMap
的
value不必实现任何内容,尽管如果您想使用
equals
,拥有
containsValue
方法将会有所帮助。