, so habe ich eine Frage an hashcode() und equals() Methodehashcode() und equals() Methode
Sagen wir, ich schreibe nur ein sehr einfaches Programm overridng sowohl die methodes
import java.util.*;
class Employee
{
private String name;
private int empid;
public Employee(String name,int empid)
{
this.name=name;
this.empid=empid;
}
public int getEmpid()
{
return empid;
}
public String getName()
{
return name;
}
public boolean equals(Object obj)
{
System.out.println("equals has just been called...");
Employee e1=(Employee)obj;
return ((name.equals(e1.name)) && (empid==e1.empid));
}
public int hashCode()
{
System.out.println("hashcode called...");
return empid;
}
}
Dann lassen Sie uns sagen, dass ich eine andere Klasse schreiben, um die Elemente in HashSet
class Five
{
public static void main(String args[])
{
HashSet hs1=new HashSet();
hs1.add(new Employee("Alex",25));
hs1.add(new Employee("Peter",25));
hs1.add(new Employee("Martin",25));
hs1.add(new Employee("Alex",25));
Iterator itr=hs1.iterator();
while(itr.hasNext())
{
Employee e=(Employee)itr.next();
System.out.println(e.getEmpid()+"\t"+e.getName());
}
}
}
jetzt hinzufügen und wiederholen die Frage ist, wenn ich versuche, Alex wieder hinzuzufügen mit der gleichen die equals() EmpID immer cal habe dir mal
wie es ist kein index n hashmap also im fall, wenn es zuerst mit zuvor hinzugefügtem Alex überprüft wird, wird es wahr und sollte nicht für die anderen zwei elemente (peter und martin) genannt werden aber gleich heißt immer 3 mal
warum .. ??
ist Objekte in gleichen Eimer haben auch den Index .. ??
Ich würde mir den HashSet Quellcode ansehen. Aus dem Speicher wird es tatsächlich zu einer Map hinzugefügt, so dass ich annehme, dass indexOf und equals mehrmals verwendet werden. – RNJ
ankur Lathinopss meine que ist anders – sandiee