2 verschiedene Objekte in Liste mit Compareable sortieren

henny23

Mitglied
Hallo,

zunächst einmal das UML Diagramm von dem Programm:
uml_java.png


Also: Ich habe in der main Klasse eine Liste, in der ich 2 verschiedene Objekte speichere. Einmal Objekte von der Klasse Fahrrad und einmal Objekte von der Klasse Kraftfahrzeug. Diese beiden Klassen erben von Fahrzeug, in der der Modellname drin steht.

Jetzt möchte ich die Liste nach den Modellnamen sortieren lassen mit Compareable.

So habe ich die Liste nun an die Sortiermethode übergeben:
public void sortiereNachName(List<Object> objektliste)

Wenn ich jetzt aber weiter programmiere bis zu dem Punkt wo aus beiden Objekten die Modellnamen verglichen werden sollen, geht das nicht, weil ich einen cast vorher drauf machen muss ? Mit dem Programmbeispiel unseres Lehrers geht das auch ohne Casts (er hat das allerdings mit Arrays gemacht)
 
Zuletzt bearbeitet:

Nardian

Bekanntes Mitglied
Hi,

ob array oder Liste sollte keinen Unterschied machen.
Vorschlagen würde ich dir dass du den generischen Typ deiner Liste von Object auf Fahrzeug änderst..
Danach würde ich dir einfach einen Comperator empfehlen, und Collections.sort aufzurufen.

(schöner wäre es wenn du den Comperator in eine eigene Varibale / eigene Klasse auslagers, ich machs jetzt nur so damits kürzer ist)

Java:
public void sortiereNachName(List<Fahrzeug> liste){
		Collections.sort(liste, new Comparator<Fahrzeug>() {

			@Override
			public int compare(Fahrzeug fahrzeug1, Fahrzeug fahrzeug2) {
				return fahrzeug1.getName().compareTo(fahrzeug2.getName());
			}});
}

Lg
 

HimBromBeere

Top Contributor
Lass deine Klasse
Code:
Fahrzeug
das Interface
Code:
Compareable
implementieren, d.h. du musst in dieser Klasse eine Methide
Code:
compareTo
zur Verfügung stellen.
 

henny23

Mitglied
Danke für eure Hilfe, leider habe ich das noch nicht ganz verstanden wie Ihr das meintet :(

Also ich habs jetzt so weit:

Java:
public class [U]Fahrzeug[/U] implements Comparable<Fahrzeug> {
	int Fahrzeugnummer;
	String ModellName;
	String Typ;


	public void sortiereNachName(List<Fahrzeug> liste){
		boolean getauscht = true;
		Fahrzeug temp;
		while(getauscht){
			getauscht = false;
			for(int i = 0; i<liste.size()-1; i++){
				if(liste.get(i).ModellName[U].compareTo[/U](liste.get(i+1))>=0){
					temp = liste.get(i);
					liste.add(i, liste.get(i+1));
					liste.add(i+1, temp);
					getauscht = true;
				}
			}
		}
	}

}

Genauso sieht das Beispielprogramm quasi aus von unserem Lehrer bloß mit Arrays, ich habe es jetzt so umgeändert, dass es mit Listen geht. Bekomme aber noch 2 Fehler mit denen ich nicht weiter weiss (sind im Quelltext unterstrichen):
1. The type Fahrzeug must implement the inherited abstract method Comparable<Fahrzeug>.compareTo(Fahrzeug)
2. The method compareTo(String) in the type String is not applicable for the arguments (Fahrzeug)
 

njans

Top Contributor
Du musst die Methode compareTo in deiner Klasse Fahrzeug einfügen.
Diese sollte dann als Parameter ein Objekt vom Typ Fahrzeug bekommen.
 

henny23

Mitglied
Etwa so ?

Java:
public int compareTo(Fahrzeug o)
    {
       return ModellName.compareTo(o.ModellName);
    }

Trotzdem bekomme ich immernoch den Fehler Nr. 2 vom vorherigen Post angezeigt

#edit: Flüchtigkeitsfehler, muss natürlich so sein:

Java:
if(liste.get(i).ModellName.compareTo(liste.get(i+1).ModellName)>=0){
 
Zuletzt bearbeitet:

HimBromBeere

Top Contributor
So geht´s zwar auch, ist aber ziemlicher Unsinn. Wenn du schon Fahrzeug das Interface implementieren lässt und dir dann eine passende Compare-Methode schreibst, kannst du die auch nutzen, im Moment nutzt du nämlcih die compareTo-Methode von String.

So müsste´s lauten:
Java:
if(liste.get(i).compareTo(liste.get(i+1))==0){
Du musst überdies auf 0 testen, da nur dies Gleichheit der beiden Objekte bedeutet (1 wäre >, -1 wäre kleiner... ob das bei Fahrzeugen irgendeinen Sinn ergibt, wage ich jetzt mal zu bezweifeln). Wenn du witrklich nur auf Gleichheit prüfen willst. brauchst du kein
Code:
Compareable
, dafür brauchst du nur die
Code:
equals
-Methode von
Code:
Object
überschreiben.

[EDIT]Achja, geht ja um Sortierung, dann wirst du wohl das Interface brauchen, hab ich übersehen[/EDIT]
 
S

SlaterB

Gast
da die Fehler Nr. 2 anscheinend weg ist, setze ich das Thema auf Erledigt,
wenn falsch vermutet, dann melden
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Verschiedene Objekte in einer Liste speichern Java Basics - Anfänger-Themen 6
D Zwei verschiedene Intellij Projekte, wie benutze ich wechselseitig objekte Java Basics - Anfänger-Themen 8
S Objekte von zwei klassen in zwei verschiedene Textdateien schreiben Java Basics - Anfänger-Themen 5
tuc Erste Schritte verschiedene objekte in einem feld speichern Java Basics - Anfänger-Themen 4
G Datentypen verschiedene Objekte in eine ArrayList, Generics Java Basics - Anfänger-Themen 2
B Verschiedene Objekte in 2 dimensionalem Array speichern Java Basics - Anfänger-Themen 10
R Klassen Mehrere/Verschiedene Objekte umcasten Java Basics - Anfänger-Themen 8
I 2 verschiedene Klassen mit gleichen Property vergleichen Java Basics - Anfänger-Themen 13
N Verschiedene Konstruktoren mit gleichen Datentypen Java Basics - Anfänger-Themen 8
Buroto Threads Verschiedene .txt Dateien Auf Listen und Verbinden Java Basics - Anfänger-Themen 3
S OOP Java Eingabe in verschiedene Datenbank Tabellen eintragen Java Basics - Anfänger-Themen 7
I SWT Plattformunabhängig laden - verschiedene SWT .jar laden Java Basics - Anfänger-Themen 0
T Java FXML selbes Fenster verschiedene Stellen im Programm Java Basics - Anfänger-Themen 5
K verschiedene Eingaben sortieren Java Basics - Anfänger-Themen 6
W Verschiedene Methoden in einer Klasse in der Main aufrufen? Java Basics - Anfänger-Themen 8
W n verschiedene Arrays zufällig ausgeben - mit der Random-Klasse? Java Basics - Anfänger-Themen 8
T for-each-Schleife, verschiedene Datentypen Java Basics - Anfänger-Themen 1
HoT verschiedene ArrayLists mit ähnlichem Namen in for-Schleife aufrufen Java Basics - Anfänger-Themen 3
FelixN Array mit verschiedene Datentypen als Rückgabewert? (Long und Double) Java Basics - Anfänger-Themen 3
T Vererbung Verschiedene Attribute für vererbte Klassen Java Basics - Anfänger-Themen 4
M JavaFX- Verschiedene Stages Java Basics - Anfänger-Themen 1
B Get / Set - Methode für verschiedene Entities? (generisch) Java Basics - Anfänger-Themen 21
L Wie Input auf verschiedene Kriterien hin überprüfen? Java Basics - Anfänger-Themen 3
T Vererbung Verschiedene Fahrzeugtypen mit unterschiedlicher Ausgabe Java Basics - Anfänger-Themen 17
F Komplexe Zahlen auf verschiedene Weise addieren Java Basics - Anfänger-Themen 18
N verschiedene Reihenfolgen ausgeben Java Basics - Anfänger-Themen 15
M Dijkstra Algorithmus in Graphen auf mehrere verschiedene Knoten anwenden lassen Java Basics - Anfänger-Themen 11
Java The Hutt SetWerte über verschiedene Klassen Java Basics - Anfänger-Themen 16
M Verschiedene Eingabe = Verschiedene Ausgaben Java Basics - Anfänger-Themen 5
M Erste Schritte Mit Variable verschiedene Texte in Textfeld einfügen Java Basics - Anfänger-Themen 27
T Datentypen Kann Java 2 verschiedene Datentypen vergleichen? Java Basics - Anfänger-Themen 2
B String auseinander nehmen in verschiedene Teile Java Basics - Anfänger-Themen 9
X Variablen Problem bei Aufteilung in verschiedene Class-Files Java Basics - Anfänger-Themen 4
E JAvaFX: Verschiedene Panels nach Klick auf Node des TreeView anzeigen Java Basics - Anfänger-Themen 0
T Java verschiedene Anweisungen Java Basics - Anfänger-Themen 23
W Verschiedene Bibliotheken in einer Anwendung? Java Basics - Anfänger-Themen 2
L Verschiedene Bilder per Knopfdruck anzeigen lassen Java Basics - Anfänger-Themen 17
J ArrayList über verschiedene Klassen verwenden Java Basics - Anfänger-Themen 7
P Erste Schritte durch MenuBar verschiedene Fenster öffnen Java Basics - Anfänger-Themen 2
GoldenShadow Input/Output Verschiedene Versionen von Input/Output Java Basics - Anfänger-Themen 3
I Drucken in Java / verschiedene Papierformate Java Basics - Anfänger-Themen 0
P Verschiedene Java Versionen nutzen Java Basics - Anfänger-Themen 6
Z Was habe ich davon mit einem Datentyp verschiedene Instanzen zu haben? Java Basics - Anfänger-Themen 6
S write(), weshalb verschiedene Ausgaben? Java Basics - Anfänger-Themen 4
E Erste Schritte Verschiedene Anfängerfragen (Rekursion, Terminierung, Schleife, etc.) Java Basics - Anfänger-Themen 5
I String trennen und verschiedene Wörter holen Java Basics - Anfänger-Themen 6
S Datei ausführen, verschiedene Ordner Java Basics - Anfänger-Themen 2
O Verschiedene Farben in einer GUI Java Basics - Anfänger-Themen 15
N Vererbung Verschiedene Subclasses nach cast zur Superclass unterscheiden Java Basics - Anfänger-Themen 9
D Verschiedene Fragen zu meinem Projekt Java Basics - Anfänger-Themen 6
S textPane verschiedene formatierungen Java Basics - Anfänger-Themen 8
K Verschiedene JDK´s paralell nutzen? Java Basics - Anfänger-Themen 3
M Verschiedene Möglichkeiten mit 'equals' abdecken? Java Basics - Anfänger-Themen 9
G Erste Schritte Über verschiedene Datentypen iterieren. Gibt es sowas? Java Basics - Anfänger-Themen 19
N Verschiedene Klassen als Parameter elegant übergeben? Java Basics - Anfänger-Themen 4
X Listen und verschiedene Methoden Java Basics - Anfänger-Themen 6
B Zwei verschiedene Daten vergleich Java Basics - Anfänger-Themen 2
K Input/Output Verschiedene Ordner für Java u.v.m. Projekte Java Basics - Anfänger-Themen 3
G Umwandlung in verschiedene Zahlensysteme Java Basics - Anfänger-Themen 4
R Verschiedene Jar Versionen nutzen Java Basics - Anfänger-Themen 14
D Umgebungsvariable verschiedene Werte von JAVA_HOME? Java Basics - Anfänger-Themen 4
J verschiedene Anweisungen bei verschiedenen Zuständen Java Basics - Anfänger-Themen 9
F Info zwischen verschiedene Klassen austauschen Java Basics - Anfänger-Themen 4
R Input/Output verschiedene Datentypen als Bytes in Datei speichern Java Basics - Anfänger-Themen 15
Blindxantos Klassen in verschiedene Packages unterteilen Java Basics - Anfänger-Themen 2
F verschiedene Daten abspeichern Java Basics - Anfänger-Themen 13
N Verschiedene JFrames in einem JFrame anzeigen Java Basics - Anfänger-Themen 7
A Datentypen Verschiedene Threads synchronisieren Java Basics - Anfänger-Themen 3
D Mehrere verschiedene Farben pro fillRect Java Basics - Anfänger-Themen 3
M Verschiedene Werte in methoden Java Basics - Anfänger-Themen 3
K Verschiedene (Thread) Objekt-Positionen (int) in einem Array zusammenfassen Java Basics - Anfänger-Themen 3
J Verschiedene Rückgabetypen(int int char) Java Basics - Anfänger-Themen 10
S Datentypen Die verschiedene Java Datentypen [Anfänger] Java Basics - Anfänger-Themen 8
J OOP verschiedene Objekttypen ablegen Java Basics - Anfänger-Themen 4
B Welcher Feld Typ für verschiedene Datentypen? Java Basics - Anfänger-Themen 4
capgeti Verschiedene Rückgabetypen ohne Typecast möglich? Java Basics - Anfänger-Themen 7
S Verschiedene Arrays über Index aufrufen Java Basics - Anfänger-Themen 5
Developer_X in JEditorPane verschiedene Farben, verwenden Java Basics - Anfänger-Themen 7
C verschiedene Label auf Knopfdruck abrufen Java Basics - Anfänger-Themen 4
L Verschiedene Fonts für verschiedene Dialogelemente Java Basics - Anfänger-Themen 2
G Verschiedene Packages Java Basics - Anfänger-Themen 3
G Daten in verschiedene Listen schreiben Java Basics - Anfänger-Themen 5
C Zustandsanzeige durch verschiedene Klassen Java Basics - Anfänger-Themen 4
S verschiedene Versionen Java Basics - Anfänger-Themen 2
G Verschiedene Exceptions zu gleichem Block Java Basics - Anfänger-Themen 6
T verschiedene Anfängerfragen Java Basics - Anfänger-Themen 20
J Verschiedene Ausgaben bei gleichen Ausdrücken (Typecasting?) Java Basics - Anfänger-Themen 5
N Verschiedene Input/Output Klassen Java Basics - Anfänger-Themen 3
G verschiedene datentypen in arraylist Java Basics - Anfänger-Themen 14
L verschiedene JPanel-Instanzen erstellen Java Basics - Anfänger-Themen 8
L 2 verschiedene Typen in einer Tabelle ablegen Java Basics - Anfänger-Themen 18
N Problem mit Tastatureingaben für verschiedene Datentypen Java Basics - Anfänger-Themen 3
L verschiedene formuare in einem fenster öffnen Java Basics - Anfänger-Themen 8
I Array für verschiedene Datentypen? Java Basics - Anfänger-Themen 5
R verschiedene dateitypen öffnen Java Basics - Anfänger-Themen 5
L verschiedene zeichen einlesen Java Basics - Anfänger-Themen 5
C 2 verschiedene Tables = 2 verschiedene Renderer ? Java Basics - Anfänger-Themen 5
S mit Buttons verschiedene Bilder laden Java Basics - Anfänger-Themen 4
S klassen in verschiedene Dateien Java Basics - Anfänger-Themen 5
3 Verschiedene Fragen (bin neu hier) Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben