![]() |
[Java] Typisierte Liste sortieren
Ich habe eine Klasse Auto:
Code:
Und eine Klasse AutoListe:
package de.Auto;
public class Auto implements Comparable<Auto> { private String marke; private String baujahr; private String farbe; public String getMarke() { return marke; } public void setMarke(String marke) { this.marke = marke; } public String getBaujahr() { return baujahr; } public void setBaujahr(String baujahr) { this.baujahr = baujahr; } public String getFarbe() { return farbe; } public void setFarbe(String farbe) { this.farbe = farbe; } public String toString() { return this.marke + ", " + this.farbe + ", " + this.baujahr; } @Override public int compareTo(Auto auto) { if (auto.toString() == null && this.toString() == null) { return 0; } if (this.toString() == null) { return 1; } if (auto.toString() == null) { return -1; } return 0; } }
Code:
Allerdings funktioniert das Sortieren nicht. Er springt gar nicht erst in die Methode public int compare() rein, wenn ich die Methode sortByToString() aufrufe. Was mache ich da noch falsch?
package de.Auto;
import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class AutoListe extends ArrayList<Auto> { private static final long serialVersionUID = 1L; private List<Auto> autoListe; public AutoListe() { autoListe = new ArrayList<Auto>(); } public void sortByToString() { Collections.sort(autoListe, newAscAutoComparator()); } protected static Comparator<Auto> newAscAutoComparator() { return new Comparator<Auto>() { @Override public int compare(Auto arg0, Auto arg1) { return arg0.toString().compareTo(arg1.toString()); }; }; } } |
AW: [Java] Typisierte Liste sortieren
Bist du sicher, dass du sort auf der richtigen Liste aufrufst?
Du leitest einmal die AutoListe von ArrayList<Auto> ab, hast dann aber noch eine weitere ArrayList<Auto> als Member. So ins Blaue hinein (weiß ja nicht, wie du die Liste verwenden willst):
Code:
public class AutoListe extends ArrayList<Auto> {
private static final long serialVersionUID = 1L; // private List<Auto> autoListe; public AutoListe() { // autoListe = new ArrayList<Auto>(); } public void sortByToString() { // Collections.sort(autoListe, newAscAutoComparator()); Collections.sort(this, newAscAutoComparator()); } protected static Comparator<Auto> newAscAutoComparator() { return new Comparator<Auto>() { @Override public int compare(Auto arg0, Auto arg1) { return arg0.toString().compareTo(arg1.toString()); }; }; } } |
AW: [Java] Typisierte Liste sortieren
Ah. OK. Ich darf keine interne Liste deklarieren. Das heißt die Liste ist schon typisiert mit
Code:
Dank dir.
public class AutoListe extends ArrayList<Auto>
|
AW: [Java] Typisierte Liste sortieren
Hallo,
Mir ist aufgefallen, dass du keinen Konstruktor in der Klasse Auto hast. In diesem Fall erbt man den Konstruktor von der Oberklasse.
Code:
War das Absicht?
...
public Auto() { this("Audi","2008","Rot"); } public Auto(String marke, String baujahr, String farbe){ this.marke = marke; this.baujahr = baujahr; this.farbe = farbe; } ... |
AW: [Java] Typisierte Liste sortieren
Ich brauchte keinen Konstruktor. Als ich noch die überflüssige interne Liste hatte, hatte ich einen, um die interne Liste zu erstellen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz