On Sun, 04 Jan 2004 10:07:35 +0100, Maxi wrote:
> Det er en teoretisk spørgsmål. Når man laver sin egen equals funktion så
> skal man også implementere dens hash funktion.
Så vidt jeg husker, så er det ikke noget krav om, at du også implementerer
hash metoden. Men hvis du også ønsker, at implementere hash metoden,
så skal denne være konsistent med equals metoden, når objekterne er ens,
men den behøver ikke nødvendigvis at være det, når objekterne _ikke_ er ens.
Klippet et sted fra JavaDocen:
"
* If two objects are equal according to the equals(Object) method, then
calling the hashCode method on each of the two objects must produce the
same integer result.
* It is not required that if two objects are unequal according to the
equals(java.lang.Object) method, then calling the hashCode method on each
of the two objects must produce distinct integer results. However, the
programmer should be aware that producing distinct integer results for
unequal objects may improve the performance of hashtables.
"
> Equals funktion til at sammenligne om to objekter er ens. Hvad benytter
> man hash funktion til ?
hash-metoden bruges f.eks. af java.util.Hashtable ,java.util.HashMap
og andre datastrukturer, som bruger hash-metoden på det enkelte objekt til
at arrangere objekterne således, at man kan indsætte, slette, find .... de
enkelte objekter effektivt (ofte i konstant tid O(1)).
Men kig selv her, da det er _meget_ bedre forklaret, end hvad jeg kan gøre
på et par linjer, eller endnu bedre find en god introducerende bog om
algoritmer og datastrukturer, da hashtabeller med 98% sikkerhed vil være
forklaret der.
Hashtabeller generelt
http://www.cs.auc.dk/~normark/ps1-94-notes/hash.pdf
http://www.dat.ruc.dk/~henning/DatCE2003/Hashing.pdf
HashTables in Java
http://www.javaworld.com/javaqa/2002-06/01-qa-0621-hashtable.html
Håber du kan bruge det til noget
--
Mikkel Bundgaard
Ph.D. student at IT University of Copenhagen
http://www.itu.dk/people/mikkelbu/
Codito, Ergo Sum