gitweb on Svarog
projekti pod git sistemom za održavanje verzija -- projects under the git version control systemdiff --git a/Hash/hash.txt b/Hash/hash.txt
--- a/Hash/hash.txt
+++ b/Hash/hash.txt
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;
+ }
}
```
```Java
public int hashCode() {
- return prezime.hashCode() + broj;
+ int rez = 0;
+ if (prezime != null) {
+ rez += prezime.hashCode();
+ }
+ rez += broj;
+ return rez;
}
```
```Java
public int hashCode() {
- return prezime.hashCode() * broj;
+ int rez = 1;
+ if (prezime != null) {
+ rez *= prezime.hashCode();
+ }
+ rez *= broj;
+ return rez;
}
```
// pretvaramo objekat u kancelariju
Kancelarija k2 = (Kancelarija) o;
- // poredimo polja
- if (prezime.equals(k2.prezime) && broj == k2.broj) {
- return true;
+
+ // Prvo proveravamo broj
+ if (broj != k2.broj) {
+ return false;
}
- return false;
+ // A potom prezime
+ if (!Objects.equals(prezime, k2.prezime)) {
+ return false;
+ }
+
+ // Proverili smo polja i sva su jednaka
+ return true;
}
```
}
Gadjanje o2 = (Gadjanje) o;
- if (o2.rezultati.length == rezultati.length) {
- for (int i = 0; i < rezultati.length; i++) {
- if (o2.rezultati[i] != rezultati[i])
- return false;
+ // proveravamo da li je polje null pre dalje provere
+ if (rezultati != null && o2.rezultati != null) {
+ if (o2.rezultati.length == rezultati.length) {
+ for (int i = 0; i < rezultati.length; i++) {
+ if (o2.rezultati[i] != rezultati[i]){
+ // cim je nesto razlicito nisu isti
+ return false;
+ }
+ }
+ // ako se sve vrednosti slazu isti su
+ return true;
}
- return true;
+ return false;
+ } else {
+ // vracamo da li su oba null, tj da li su jednaki
+ return (rezultati == null && o2.rezultati == null);
}
- return false;
}
```
```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;
}
if (getClass() != o.getClass()) {
return false;
}
+
+ // menjamo tip da mozemo da poredimo
XO o2 = (XO) o;
+ // posto je u ovoj klasi uvek inicijalizovano polje table
+ // i uvek je DIM x DIM ne moramo proveravati null
for (int i = 0; i < DIM; i++) {
for (int j = 0; j < DIM; j++) {
if (o2.tabla[i][j] != tabla[i][j]) {