gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
Zadatak Putnici - Hash funkcija i funkcija jednakosti
[spa2-materijali.git] / Hash / OHashSet / Kancelarija.java
1 import java.util.Objects;
3 import org.svetovid.io.SvetovidReader;
5 /**
6 * Koriscenje kancelarija
7 *
8 * Prosiruje InfoTip samo zbog jednostavnosti u TestHash, nema razloga inace.
9 */
10 public class Kancelarija extends InfoTip {
11 private String prezime;
12 private int broj;
14 public Kancelarija(String prezime, int broj) {
15 this.prezime = prezime;
16 this.broj = broj;
17 }
19 public Kancelarija() {
20 };
22 public boolean equals(Object o) {
23 // Objekat je identican
24 if (this == o) {
25 return true;
26 }
27 // Null je uvek razlicit
28 if (o == null) {
29 return false;
30 }
31 // Ako su klase razlicite, objekti ne mogu bili jednaki
32 if (getClass() != o.getClass()) {
33 return false;
34 }
36 // pretvaramo objekat u kancelariju
37 Kancelarija k2 = (Kancelarija) o;
39 // Prvo proveravamo broj
40 if (broj != k2.broj) {
41 return false;
42 }
44 // A potom prezime
45 if (!Objects.equals(prezime, k2.prezime)) {
46 return false;
47 }
49 // Proverili smo polja i sva su jednaka
50 return true;
51 }
53 public int hashCode() {
54 int rez = 1;
55 if (prezime != null) {
56 rez *= prezime.hashCode();
57 }
58 rez *= broj;
59 return rez;
60 }
62 @Override
63 public InfoTip ucitaj(SvetovidReader r) {
64 String prez = r.readToken(); // citamo jednu "rec"
65 int br = r.readInt();
66 InfoTip rez = new Kancelarija(prez, br);
67 return rez;
68 }
70 // pomocni metod za lakse testiranje
71 public static void main(String[] args) {
72 new TestHash(new Kancelarija(), "kancelarije").run();
73 }
75 // ovaj konstruktor nije neophodan, ostavljen je kao primer
76 public Kancelarija(String line) {
77 String[] delovi = line.trim().split(" ");
78 if (delovi.length == 2) {
79 try {
80 prezime = delovi[0];
81 broj = Integer.parseInt(delovi[1]);
82 } catch (Exception ex) {
83 throw new RuntimeException(ex);
84 }
85 } else
86 throw new RuntimeException("Pogresan broj argumenata u redu");
87 }
89 }
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner