Java: Řazení

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
m (Pro třídy, kde je více možných kritérií řazení: Oprava vzhledu)
m (Pro třídy, kde je více možných kritérií řazení: Oprava vzhledu)
Řádka 40: Řádka 40:
 
   
 
   
 
      public int getCena() { return this.cena; }  
 
      public int getCena() { return this.cena; }  
      public double getSpotreba() { return this.spotreba; }  
+
      public double getSpotreba() {  
 +
        return this.spotreba;  
 +
    }  
 
      public String getNazev() { return this.nazev; }  
 
      public String getNazev() { return this.nazev; }  
 
  }  
 
  }  
  
 
  class AutoComparatorCena implements Comparator<Auto> {  
 
  class AutoComparatorCena implements Comparator<Auto> {  
      public int compare(Auto a1, Auto a2) { return a1.getCena() - a2.getCena(); }  
+
      public int compare(Auto a1, Auto a2) {
 +
        return a1.getCena() - a2.getCena();  
 +
    }  
 
  }  
 
  }  
  
 
  class AutoComparatorSpotreba implements Comparator<Auto> {  
 
  class AutoComparatorSpotreba implements Comparator<Auto> {  
      public int compare(Auto a1, Auto a2) { return Math.truncate(a1.getSpotreba() - a2.getSpotreba()); }  
+
      public int compare(Auto a1, Auto a2) {
 +
        return Math.truncate(a1.getSpotreba() - a2.getSpotreba());  
 +
    }  
 
  }  
 
  }  
  
 
  class AutoComparatorNazev implements Comparator<Auto> {  
 
  class AutoComparatorNazev implements Comparator<Auto> {  
      public int compare(Auto a1, Auto a2) { return a1.getNazev().compareTo(a2.getNazev()); }  
+
      public int compare(Auto a1, Auto a2) {
 +
        return a1.getNazev().compareTo(a2.getNazev());  
 +
    }  
 
  }
 
  }
 
</div>
 
</div>
Řádka 59: Řádka 67:
 
  Collections.sort(auta, new AutoHmotnostComparator());
 
  Collections.sort(auta, new AutoHmotnostComparator());
 
* Lze vytvořit také anonymní třídu pro porovnání (komparátor):
 
* Lze vytvořit také anonymní třídu pro porovnání (komparátor):
  Collections.sort(auta,  new Comparator&ltAuto>() { public int compare(Auto a1, Auto a2) { return ...  } } );
+
  Collections.sort(auta,  new Comparator&lt;Auto>() { public int compare(Auto a1, Auto a2) { return ...  } } );
  
 
== Související stránky ==
 
== Související stránky ==
 
* [[Řadící algoritmy]]
 
* [[Řadící algoritmy]]

Verze z 9. 12. 2014, 10:24


Řadícími algoritmy, jejich principem a vlastnostmi se zabývá stránka Řadící algoritmy.


Pro třídy s přirozeným řazením

Příklad:
public class Mince implements Comparable<Mince> { 
    private int hodnota; 

    public int compareTo(Mince druhaMince) { 
        return this.hodnota - druhaMince.hodnota; 
    } 
}
ArrayList<Mince> mince = new Array...
Collections.sort(mince);

Některé třídy Javy už mají rozhraní Comparable implementované. Pak je můžeme řadit přímo: Collections.sort(cisla);.

Příkladem takové třídy jsou objektové číselné typy jako Integer.

Pro třídy, kde je více možných kritérií řazení

Příklad:
public class Auto { 
    private int cena; 
    private double spotreba; 
    private String nazev; 

    public int getCena() { return this.cena; } 
    public double getSpotreba() { 
        return this.spotreba; 
    } 
    public String getNazev() { return this.nazev; } 
} 
class AutoComparatorCena implements Comparator<Auto> { 
    public int compare(Auto a1, Auto a2) {
        return a1.getCena() - a2.getCena(); 
    } 
} 
class AutoComparatorSpotreba implements Comparator<Auto> { 
    public int compare(Auto a1, Auto a2) {
        return Math.truncate(a1.getSpotreba() - a2.getSpotreba()); 
    } 
} 
class AutoComparatorNazev implements Comparator<Auto> { 
    public int compare(Auto a1, Auto a2) {
        return a1.getNazev().compareTo(a2.getNazev()); 
    } 
}
Collections.sort(auta, new AutoHmotnostComparator());
Collections.sort(auta,  new Comparator<Auto>() { public int compare(Auto a1, Auto a2) { return ...  } } );

Související stránky

Osobní nástroje
Jmenné prostory
Varianty
Akce
Výuka
Navigace
Nástroje