java修改类,使其可以用作HashMap中的键
class Employee
{
private String name;
private int age;
private int empid;
public Employee(String name, int age, int empid)
{
super();
this.name = name;
this.age = age;
this.empid = empid;
}
}
如何修改上述类,使其可以用作HashMap中的键
# 1 楼答案
它已经可以在hashmap中使用了所有Java对象都有一个
hashCode
和equals
方法,这是hashmap工作所必需的# 2 楼答案
对于要在hashmap中用作键的类,基本上需要做三件事。首先使类不可变,第二个重写hashCode方法,第三个重写equals方法
使类不可变。以下是一些不变性规则:
从本教程了解有关创建不可变类的更多信息:
http://javarevisited.blogspot.in/2013/03/how-to-create-immutable-class-object-java-example-tutorial.html
要了解覆盖hashCode和equals方法,请遵循以下步骤:
http://javarevisited.blogspot.in/2011/02/how-to-write-equals-method-in-java.html
# 3 楼答案
为了将类用作有效的哈希映射键,该类应该同时重写
equals
和hashCode
。hashCode
变量返回一个int,用于计算此特定对象的低级查找索引使类不可变也是一个好主意,就好像hashCode在程序中更改一样,您的密钥现在是无用的
# 4 楼答案
在HashMap中将自定义类作为键的充分条件
如果您认为只想检查引用上的相等性(不推荐),则使用IdentityHashMap
# 5 楼答案
你什么都不用做。所有类都扩展了对象类。由于方法
hashcode()
和equals()
是在对象类中定义的,所以任何类都可以用作键但是,如果您确实决定将类用作HashMap键,则应该重写这两个方法
如果您使用Eclipse作为IDE,它可以为您生成这两个函数
只需单击源代码中的任意位置-> 来源-> 生成Hashcode()和equals()