Hirdetés

Keresés

Új hozzászólás Aktív témák

  • Peter Kiss
    őstag

    Superhun megoldása teljesen jó.

    Viszont ha már saját osztályt használsz felüldefiniált metódusokkal, akkor szerintem elég az equals felüldefiniálni úgy, hogy a String és az int egyezőség esetén adjon vissza TRUE-t és akkor egy "sima" ArrayList-be is teheted. Persze attól is függ, hogy mennyi elemed lesz, mert nagyon sok elem esetén az ArrayList nem túl gazdaságos. Nem mondom, hogy Superhun vagy az én megoldásom a jobb, az enyém egy alternatív, de valamivel egyszerűbb megoldás, mert csak 1 metódus felüldefiniálását kell megcsinálni, de mint írtam, sok elemnél nem feltétlenül gazdaságos.

    Sosem szabad csak az equals()-t vagy csak a hashCode()-ot felülírni! Nyilván képes lesz működni, ha csak az egyik van felülírva, de mihelyst az objektum fel lesz használva kulcsként (dictionary, set), máris hibás működést kaphatunk! Emellett azt is figyelembe kell venni, hogy az alaplogikának egyeznie kell a két metódusban, különben szintén hibás működést kaphatunk (pl. mikor egy set-hez akarnánk hozzáadni végtelen ciklusba is kerülhetünk). Sőt, igazából ilyen kulcsként való felhasználás esetén csak immutable objektumokat szabadna használni.

Új hozzászólás Aktív témák