Jelenlegi hely

12.4.2. Az equals és hashCode metódusok

Az equals metódus két objektumot hasonlít össze és dönti el, hogy egyenlők-e vagy sem (ha egyenlők, true-val tér vissza). Ha önmagával hasonlítunk egy objektumot, true-t ad vissza.

A következő programrészlet összehasonlít két Integer-t:

Integer one = new Integer(1);
Integer anotherOne = new Integer(1);
if (one.equals(anotherOne)) {
    System.out.println("objects are equal");
}

A program kimenete:

objects are equal

Egyenlők, mivel az értékük megegyezik. Ha két objektum egyenlő az equals metódus szerint, akkor a hashCode metódus által szolgáltatott értékeknek is meg kell egyezniük. (Figyelem, fordítva ez nem feltétlenül igaz!)

Ha az equals működése nem megfelelő az osztályunk számára, akkor felül kell írnunk az osztályunkban.

A hashCode metódus állítja elő az objektumok hash kódját, ami például akkor lehet szükséges, ha az objektumot hashtáblában tároljuk. Hash kódként (a metódus visszatérési értékeként) mindig egy int típusú számot kapunk.

Helyes hash függvény írása egyszerű, azonban hatékony függvény írása nehéz lehet, komolyabb munkát igényel. Ez a téma azonban már nem fér bele a jegyzetünkbe.