Я пытаюсь получить значение другого элемента в методах переопределения HashMap и метода hashcode. Почему rollId возвращается null, когда у меня есть тот же хэш-код для student1 и student3, а также эти 2 объекта равны? В идеале он должен вернуть мне 3. Ниже приведен фрагмент кода:Карта HashCode и Equals
Main Class
public static void main(String[] args) {
Map<Student, Integer> studentMap = new HashMap<Student, Integer>();
Student student1 = new Student();
student1.setRollId(1);
Student student2 = new Student();
student2.setRollId(2);
studentMap.put(student1, 1);
studentMap.put(student2, 2);
for (Entry<Student, Integer> entry : studentMap.entrySet()) {
if (entry.getValue().equals(1)) {
student1.setRollId(3);
}
}
Student student3 = new Student();
student3.setRollId(3);
System.out.println("Student1 HashCode " + student1.hashCode()
+ " Student3 HashCode " + student3.hashCode());
System.out.println("Object Equal === > " + student1.equals(student3));
Integer rollId = studentMap.get(student3);
System.out.println("RollId is " + rollId);
}
Студент Класс
private Integer rollId;
public Integer getRollId() {
return rollId;
}
public void setRollId(Integer rollId) {
this.rollId = rollId;
}
@Override
public int hashCode() {
return rollId;
}
@Override
public boolean equals(Object obj) {
Student student = (Student)obj;
if(this.rollId.equals(student.getRollId()))
{
return true;
}
return false;
}
Вы должны размещать весь код, а не отрывками, так что хелперы может проверить ваш код. –