hashcode () und equals () Methode [duplizieren]

Diese Frage hat hier bereits eine Antwort:

Welche Probleme sollten beim Überschreiben von equals und hashCode in Java berücksichtigt werden? 11 Antworten

So habe ich eine Frage zu Hashcode () und Equals () Methode

Sagen wir, ich schreibe nur ein sehr einfaches Programm, das beide Methoden überschreibt

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;
   }

}

ngenommen, ich schreibe eine weitere Klasse, um die Elemente in HashSet @ hinzuzufügen und zu iteriere

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 ist die Frage, wann ich versuche, Alex erneut mit dem gleichen Empid hinzuzufügen, das equals () dich immer mal genannt hat.

da es keine index n hashmap gibt, wird bei erstmaliger Prüfung mit Alex true zurückgegeben und sollte nicht für die anderen beiden Elemente (peter und martin) aufgerufen werden, sondern immer gleich 3 mal

Warum..?

Ihre Objekte in demselben Bucket haben auch den Index .. ??

Antworten auf die Frage(4)

Ihre Antwort auf die Frage