From: Doni Pracner Date: Sun, 8 Nov 2015 14:27:16 +0000 (+0100) Subject: Hash, tekst i pdf osvezeni X-Git-Url: http://svarog.pmf.uns.ac.rs/gitweb/?p=spa2-materijali.git;a=commitdiff_plain;h=f0fc0cf9a36619e6b4b9d331782354c9dfeefac2 Hash, tekst i pdf osvezeni --- diff --git a/Hash/hash.pdf b/Hash/hash.pdf index 8a404a7..415e68e 100644 Binary files a/Hash/hash.pdf and b/Hash/hash.pdf differ diff --git a/Hash/hash.txt b/Hash/hash.txt index 743c31c..d9cdb18 100644 --- a/Hash/hash.txt +++ b/Hash/hash.txt @@ -152,11 +152,16 @@ tabele sa 503 mesta i oko 10\% za 997 mesta. Slično važi i za prezimena, budući da ih ima samo šestdesetak, bez obzira na koliko je dobar heš kod u klasi `String`, možemo imati samo šestdesetak različitih rezultata, odnosno dobijamo još gore rezultate, -čak i za relativno malu tabelu sa 101 podskupom. +čak i za relativno malu tabelu sa 101 podskupom. Ovde treba obratiti +pažnju i da je moguće da imamo `null` polje. ```Java public int hashCode() { - return prezime.hashCode(); + if (prezime != null) { + return prezime.hashCode(); + } else { + return 0; + } } ``` @@ -181,7 +186,12 @@ jednostavno samo sabrati: ```Java public int hashCode() { - return prezime.hashCode() + broj; + int rez = 0; + if (prezime != null) { + rez += prezime.hashCode(); + } + rez += broj; + return rez; } ``` @@ -211,7 +221,12 @@ Na primer ```Java public int hashCode() { - return prezime.hashCode() * broj; + int rez = 1; + if (prezime != null) { + rez *= prezime.hashCode(); + } + rez *= broj; + return rez; } ``` @@ -415,8 +430,10 @@ prvim elementima. ```Java public int hashCode() { int rez = 0; - for (int i = 0;i < rezultati.length; i++) { - rez = (rez + rezultati[i] * (MAX_DUZ+1-i)) * 7; + if (rezultati != null) { + for (int i = 0; i < rezultati.length; i++) { + rez = (rez + rezultati[i] * (MAX_DUZ + 1 - i)) * 7; + } } return rez; }