gitweb on Svarog

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