X-Git-Url: http://svarog.pmf.uns.ac.rs/gitweb/?p=spa2-materijali.git;a=blobdiff_plain;f=sortiranje%2Fknjige%2FBiblioteka2.java;h=d46a89762a9745b86b6daaada21eef7164453d1f;hp=0998f983342c782d17418555055073861a4eb1f7;hb=2cf3bc80d3e3bb12d762916f9238b445d38129de;hpb=d68d7013f76f881985944fa75064405124ed5a0d diff --git a/sortiranje/knjige/Biblioteka2.java b/sortiranje/knjige/Biblioteka2.java index 0998f98..d46a897 100644 --- a/sortiranje/knjige/Biblioteka2.java +++ b/sortiranje/knjige/Biblioteka2.java @@ -1,17 +1,17 @@ -/** - * Resenje zadatka opisanog u zad-sort2, koji je prosirenje zad-sort1 - */ - -import org.svetovid.io.*; import java.util.Arrays; import java.util.Comparator; +import org.svetovid.Svetovid; +import org.svetovid.io.SvetovidReader; +import org.svetovid.io.SvetovidWriter; + // Klasa koja opisuje jednu knjigu class Knjiga implements Comparable { - public final int id; - public final String naslov; - public final String autor; + // Osobine jednom kreirane knjige se ne mogu menjati + private final int id; + private final String naslov; + private final String autor; public Knjiga(int id, String naslov, String autor) { this.id = id; @@ -19,12 +19,42 @@ class Knjiga implements Comparable { this.autor = autor; } + public String getNaslov() { + return naslov; + } + + public String getAutor() { + return autor; + } + + public int getId() { + return id; + } + public String toString() { + + // Tekstualna reprezentacija knjige oblika: + // 9785 J.R.R. Tolkien: The Lord of the Rings return id + " " + autor + ": " + naslov; + } public int compareTo(Knjiga that) { - return this.id - that.id; + + // Najjednostavnije poredjenje je po "id" broju + // return this.id - that.id; + + // No mi ovde poredimo prvo po autoru + int rezultat = this.autor.compareTo(that.autor); + + // A potom po naslovu, ako je sutor isti + if (rezultat == 0) { + rezultat = this.naslov.compareTo(that.naslov); + } + + // Vracamo rezultat poredjenja + return rezultat; + } } @@ -92,7 +122,7 @@ public class Biblioteka2 { } // Ako mozemo, napravimo precicu 'in' da ne bi morali da - // svaki put kuvamo 'Svetovid.in(imeFajla)' + // svaki put kucamo 'Svetovid.in(imeFajla)' SvetovidReader in = Svetovid.in(imeFajla); // Koliko ima knjiga u fajlu? @@ -154,10 +184,10 @@ public class Biblioteka2 { fajl.println(niz.length); // I potom podatke za svaku knjigu - for (Knjiga k : niz) { - fajl.println(k.id); - fajl.println(k.naslov); - fajl.println(k.autor); + for (Knjiga knjiga : niz) { + fajl.println(knjiga.getId()); + fajl.println(knjiga.getNaslov()); + fajl.println(knjiga.getAutor()); } // Zatvorimo fajl @@ -170,13 +200,15 @@ public class Biblioteka2 { public static void sortirajNiz(Knjiga[] niz, Comparator c) { Knjiga tmp; - for (int i = niz.length - 1; i > 0; i--) - for (int j = 0; j < i; j++) + for (int i = niz.length - 1; i > 0; i--) { + for (int j = 0; j < i; j++) { if (c.compare(niz[j], niz[i]) > 0) { tmp = niz[j]; niz[j] = niz[i]; niz[i] = tmp; } + } + } } } @@ -186,7 +218,7 @@ class KomparatorPoNaslovu implements Comparator { @Override public int compare(Knjiga knjiga1, Knjiga knjiga2) { - int rezultat = knjiga1.naslov.compareTo(knjiga2.naslov); + int rezultat = knjiga1.getNaslov().compareTo(knjiga2.getNaslov()); return rezultat; } } @@ -196,7 +228,7 @@ class KomparatorPoAutoru implements Comparator { @Override public int compare(Knjiga knjiga1, Knjiga knjiga2) { - int rezultat = knjiga1.autor.compareTo(knjiga2.autor); + int rezultat = knjiga1.getAutor().compareTo(knjiga2.getAutor()); return rezultat; } } @@ -222,7 +254,6 @@ class ObrnutiKomparator implements Comparator { @Override public int compare(Knjiga knjiga1, Knjiga knjiga2) { - return -originalni.compare(knjiga1, knjiga2); } } @@ -233,8 +264,7 @@ class KompozitniKomparator implements Comparator { private final Comparator primarni; private final Comparator sekundarni; - public KompozitniKomparator(Comparator primarni, - Comparator sekundarni) { + public KompozitniKomparator(Comparator primarni, Comparator sekundarni) { this.primarni = primarni; this.sekundarni = sekundarni; }