To je daleko starsi koncept. Pamatuji se, ze ve skole jsme se o tom ucili v zakladech programovani a to bylo min 2 roky pred Javou (uz jsem kmet ;)
H.
-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]On Behalf Of Kamzik-II
Sent: Thursday, July 27, 2006 3:41 PM
To: Java
Subject: Re: equals a hashCode (WAS: java.security.Permission)

Hm dumyslne ;-)
Ti navrhari javy nebyli uplne "blbi" :)
----- Original Message -----
To: Java
Sent: Thursday, July 27, 2006 3:38 PM
Subject: RE: equals a hashCode (WAS: java.security.Permission)

Trefa do cernyho ;) Pres hashcode se "nablizite", pres equals dohledate. Princip je ten, ze nedelate equals pres vsechno (u slozitejsich objektu muze byt pomale, treba i u Stringu by ten equals nemusel byt uplne idealni).
 
H.

 -----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]On Behalf Of Kamzik-II
Sent: Thursday, July 27, 2006 3:37 PM
To: Java
Subject: Re: equals a hashCode (WAS: java.security.Permission)

Aha takze ciste jenom kvuli rychlosti?
----- Original Message -----
To: Java
Sent: Thursday, July 27, 2006 3:32 PM
Subject: RE: equals a hashCode (WAS: java.security.Permission)

V HashMap, Hashtable apod. V nich jsou prvky organizovany dle jejich hashcodu (rychlejsi vyhodnoceni (ne)shody pri hledani) a teprve v zaverecne fazy se pouzije equals. V hash tabulkach jsou totiz prvky organizovany dle jejich hashcode (kolize se resi prostym retezenim za sebou, nebo do spojoveho seznamu).
 
Tudiz pri dotazech typu containsKey, get apod se nejprve hleda dle hashcode a nasledne se provadi porovnani pres equals.
 
Honza
-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]On Behalf Of Kamzik-II
Sent: Thursday, July 27, 2006 3:25 PM
To: Java
Subject: Re: equals a hashCode (WAS: java.security.Permission)

O boze, equals tady nekdo pekne vysvetlil na
vytiscich knih, hascode vicemene taky chapu, ale
neni mi jasne na co je mi dobrej ;-)
 
----- Original Message -----
From: Vit Novak
To: 'Java'
Sent: Thursday, July 27, 2006 1:07 PM
Subject: equals a hashCode (WAS: java.security.Permission)

Zdravim.

 

Doporucuji precist si knizku od pana Blocha (cesky Java efektivne, anglicky Effective Java). Pan Bloch tuto problematiku rozebira pomerne podrobne a myslim, ze tohle patri k zakladnim znalostem, bez kterych dobry Java kod proste psat nebudete. Jedna se totiz o to, ze predefinovani metody equals nebo hashCode vas zavazuje k dodrzeni urcitych pravidel, bez kterych vam treba Collections budou chodit _velmi_ divne nebo vubec.

 

Samozrejme je mozne nadefinovat hashCode a equals implementovat jen jako porovnani hashCode, to ovsem casto neni to, co chcete. Vetsinou jdete obracene – nejak si urcite, kdy maji byt dve instance nejake tridy rovne a to naimplementujete. Napriklad budete mozna chtit aby dve ruzne instance tridy mujBigInt, reprezentujici cislo 37, vratily na equals true, ale reprezentace cisla 37 a cisla 56498765654987984632159789 by na equals true vratit nemela. Pak Vas ovsem hashCode zavazuje, aby equals instance vracely stejny hashCode, ale nijak Vas nenuti, aby pro dve instance, ktere equals nejsou byly hashCode ruzne. A zrovna u mujBigIntu hashCode tak, aby pro kazda dve nonequals cisla vratil ruzne hashe, proste nevymyslite.

 

Dalsi vec je, ze kod, kde equals je implementovano jako porovnani hashi, nebude zrovna moc citelny...

 

Toz tak, hodne stesti

 

V.

 


From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Kamzik-II
Sent: 27. července 2006 12:49
To: Java
Subject: Re: java.security.Permission

 

Ale paklize by tohle vzdy platilo, pak by byla uplna blbost

predefinovat metodu equals, protoze by v ni stacilo porovnavat hascode, kdezto v rodicovske implementaci se porovnavaji pouze instance.

----- Original Message -----

To: Java

Sent: Thursday, July 27, 2006 10:58 AM

Subject: Re: java.security.Permission

 

A este si treba pozriet Javadoc k samotnemu objektu java.lang.Object. Tam sa pise o metode hashCode(), ze musi byt implementovana tak aby dva objekty, ktore su equals() musia mat rovnaky hshCode().

Odpovedet emailem