Podlesak Kamil wrote: > Zdravim, > > To je proste: Map#hashCode() presne definuje ze vysledek musi byt vypocitan > jako soucet hashcode vsech zaznamu. Pridanim noveho prvku se tedy zmeni > hodnota hashCode. > > Jenomze HashSet (resp. HashMap, kterou interne pouziva) zarazuje i hleda > zaznamy podle hashCode(). Jakmile se hashCode zmeni, tak hleda jinde a > nenajde. > > Plati obecne pravidlo: > Objekty vkladane do hash mapy NESMI MENIT svuj hashCode()! Tedy alespon po > dobu, co jsou v mape. > Konkretne pak plati: > Kolekce (Map, Collection) vlozene do hash mapy se NESMI MODIFIKOVAT. > > Pokud potrebujete mit v mnozine kolekce ktere bezne modifikujete, pouzijte > IdentityHashMap.
Jen pro upresneni, nesmi se menit vysledek volani hashCode() u objektu pouzivanych jako *klice* v *HashMap*, pripadne ukladanych do HashSet (ktera interne pouziva HashMap). U objektu vkladanych jako *hodnoty* v HashMap je to jedno. U objektu vkladanych do implementaci Set a Map zalozenych na jinem principu nez hashovaci tabulce by to melo byt taky jedno, protoze hashCode() nevolaji. Napr. TreeSet. Makub -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Supercomputing Center Brno Martin Kuba Institute of Computer Science email: [EMAIL PROTECTED] Masaryk University http://www.ics.muni.cz/~makub/ Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775 --------------------------------------------------------------
smime.p7s
Description: S/MIME Cryptographic Signature
