Ich habe viel gesucht und kaum gute Erklärungen bzw. gute Code-Beispiele gefunden. Ich denke mein Code erklärt es ganz anschaulich. Allerdings habe ich auch eine Frage (unter dem Code)
Erklärung: Die Methode
AUSGABE:
Frage: Wie kann man im Methodenaufruf bestimmen, nach welchem Attribut bzw. ob auf- oder absteigend sortiert werden soll.
Java:
import java.util.ArrayList;
import java.util.Collections;
public class Pizza implements Comparable<Pizza>{
String name;
int kalorien;
boolean mitKaese;
public Pizza(String name, int kalorien, boolean mitKaese) {
this.name = name;
this.kalorien = kalorien;
this.mitKaese = mitKaese;
}
public static void main(String[] args) {
ArrayList<Pizza> pizzen = new ArrayList<Pizza>();
pizzen.add(new Pizza("Diavolo", 620, true));
pizzen.add(new Pizza("Salami", 730, false));
pizzen.add(new Pizza("Funghi ", 510, true));
pizzen.add(new Pizza("Hawaii", 520, false));
System.out.println("-----------VORHER---------");
for (Pizza p : pizzen) {System.out.println(p.toString());}
Collections.sort(pizzen);
System.out.println("-----------NACHHER---------");
for (Pizza p : pizzen) {System.out.println(p.toString());}
}
@Override
public String toString() {
String kaese = "ohne";
if (mitKaese) {kaese = "mit";}
return String.format("Pizza %s %s Käse hat %d Kalorien", this.name, kaese, this.kalorien);
}
@Override
public int compareTo(Pizza p) {
if (this.kalorien > p.kalorien) {
return 1;
} else if ((this.kalorien < p.kalorien)) {
return -1;
} else {
return 0;
}
}
}
Collections.sort(liste)
benutzt standardmäßig die Methode int compareTo(Objekt o)
für eine einfache Sortierung von Collections mit "einfachem Inhalt" wie int oder String. Will man Listen mit eigenen Objekte nach bestimmten Attributen sortieren, dann muss man das Interface Comparable implementieren und die Methode compareTo überschreiben.AUSGABE:
Code:
-----------VORHER---------
Pizza Diavolo mit Käse hat 620 Kalorien
Pizza Salami ohne Käse hat 730 Kalorien
Pizza Funghi mit Käse hat 510 Kalorien
Pizza Hawaii ohne Käse hat 520 Kalorien
-----------NACHHER---------
Pizza Funghi mit Käse hat 510 Kalorien
Pizza Hawaii ohne Käse hat 520 Kalorien
Pizza Diavolo mit Käse hat 620 Kalorien
Pizza Salami ohne Käse hat 730 Kalorien
Frage: Wie kann man im Methodenaufruf bestimmen, nach welchem Attribut bzw. ob auf- oder absteigend sortiert werden soll.
Zuletzt bearbeitet: