因为要用让HashSet组(存放题目)中的题目不重复,重写了equals方法与HashCode方法
请问这里重写equals 还有 HashCode方法应该怎么理解?
public class Question {
private String Title;//题干
private String Answer;//正确答案
public Question(String Title,String Answer) { //title是题干,answer是对应答案
this.Title=Title;
this.Answer=Answer;
}
public String getTitle() {
return Title;
}
public String getAnswer() {
return Answer;
}
//为了使得HashSet组中的题干唯一,需重写equals方法与HashCode方法
@Override
public boolean equals(Object obj) {
if(this==obj)
return true;
if(obj instanceof Question) {
Question anotherQuestion = (Question) obj;
// 比较题干是否相同
if (this.getTitle().equals(anotherQuestion.getTitle()))
return false;
}
return true;
}
@Override
public int hashCode() {
return this.getTitle().hashCode();
}
}
下面是调用equals的代码
//使用HashMap记录学号与密码
private HashMap<String,String>userbank=new HashMap<String,String>();{
userbank.put("James", "123456");
userbank.put("Smith", "123456");
userbank.put("Hellon", "123456");
}
//登录Login方法
public boolean login(String username,String password) {
String realPassword=userbank.get(username);//从userbank中读取真正密码
if(realPassword !=null & realPassword.equals(password))
return true;
else return false;
}
问题就是这两个方法重写的代码怎么理解,他们重写之后跟重写之前有什么区别,在调用中是怎么体现的?