Welche Collection kann sich selber sortieren?

sicLotus

Bekanntes Mitglied
Hallo,

ich hab mir einen eigenen Datentyp angelegt:
Java:
public class MyData {
	private double distance;
	private int key;
	
	public MyData() {
		super();
		this.distance = 0.;
		this.key = 0;
	}
	public MyData(double distance, int key) {
		super();
		this.distance = distance;
		this.key = key;
	}
	public double getDistance() {
		return distance;
	}
	public void setDistance(double distance) {
		this.distance = distance;
	}
	public int getKey() {
		return key;
	}
	public void setKey(int key) {
		this.key = key;
	}

}

Jetzt möchte ich gerne eine Collection haben mit diesem Datentyp (könnte auch ein Array sein)
Vorzugsweise wäre mir ne List eigentlich lieb, aber ich weiß halt nicht ob das damit geht:

Die Liste zeigt ja dann auf meinen Datentyp, welcher 2 Werte hat, distance und key. Jetzt möchte ich das sich die Collection/Liste/Array (was auch immer) sowohl nach distance, als auch nach key sortieren lässt.. Funktioniert sowas bzw gibt es sowas ueberhaupt?

Ansonsten bräuchte ich halt gleich sortiertes einfügen, aber auch hier hab ich nichts gefunden, das Problem ist halt, das in der Collection 2 unterschiedliche Werte die ganze Zeit gespeichert sind..
 

Michael...

Top Contributor
Wenn key tatsächlich ein Key ist, könntest Du eine SortedMap z.B. TreeMap verwenden, dann könntest Du Dir auch die Definition einer eigenen Klasse sparen.

Ansonsten kann man auch andere Listen nehmen z.B. ArrayList. Wenn Du Dein Objekt dann noch Comparable implementieren lässt, kann man die Liste relativ einfach sortieren. Das Sortieren beim Einfügen müsstest Du dann selbst anstossen.
 
G

Gast2

Gast
Die Liste zeigt ja dann auf meinen Datentyp, welcher 2 Werte hat, distance und key. Jetzt möchte ich das sich die Collection/Liste/Array (was auch immer) sowohl nach distance, als auch nach key sortieren lässt.. Funktioniert sowas bzw gibt es sowas ueberhaupt?

Musst du dir einen Comparator implementieren und den dan beim Sort aufruf mitgeben
 

sicLotus

Bekanntes Mitglied
Ich habs jetzt irgendwie hinbekommen, aber verstehen tu ich das trotzdem überhaupt nicht -.-

Ich hab meinen Datentyp jetzt wiefolgt erweitert:

Java:
public class MyData implements Comparable {
	private double distance;
	private int key;
	
	public MyData() {
		super();
		this.distance = 0.;
		this.key = 0;
	}
	public MyData(double distance, int key) {
		super();
		this.distance = distance;
		this.key = key;
	}
	public double getDistance() {
		return distance;
	}
	public void setDistance(double distance) {
		this.distance = distance;
	}
	public int getKey() {
		return key;
	}
	public void setKey(int key) {
		this.key = key;
	}
	@Override
	public int compareTo(Object o) {
		if (this.distance == ((MyData)o).distance) return 0;
		else if ((this.distance) > ((MyData) o).distance)
            return 1;
        else
            return -1;
    }
}

Ich würd gern mit "Generics" arbeiten, aber auch das ist irgendwie noch ein Thema welches sehr verschwommen ist :)

Das CompareTo hab ich so aehnlich auf ner anderen Seite gefunden und das klappt auch, jetzt sortiert er mir das nach der distance wenn ich einfach nur Collections.sort() aufrufe..

Könntet ihr mir aber vllt ein kleines Beispiel geben wie ich das mit dem comparator machen würde? Muss ich dafür dann ne eigene Klasse anlegen oder so? :/
 

Michael...

Top Contributor
Könntet ihr mir aber vllt ein kleines Beispiel geben wie ich das mit dem comparator machen würde? Muss ich dafür dann ne eigene Klasse anlegen oder so? :/
Genauso, auch hier musst Du eine Methode compareTo() implementieren. Mittels Comparator kann man halt Listen unabhängig von der im Objekt definierten compareTo() Methode sortieren.

In Deinem Code bekommt bei distance Gleichheit irgendein Objekt den Vorzug, das könnte man noch genauer spezifizieren, in dem man zusätzlich die keys vergleicht - falls notwendig.
 

Michael...

Top Contributor
Generisch würde es wie folgt aussehen:
Java:
public class MyData implements Comparable<MyData> {
...
    public int compareTo(MyData data) {
        ...
    }
}
 

sicLotus

Bekanntes Mitglied
Hm.. dann würde das casten vom objekt zum mydata wegfallen richtig?

Ich hab mir gerade mal die Insel n bisschen genauer durchgelesen und ich glaube ich habs verstanden. Nur eins verwundert mich:
static <T> void sort( T[] a, Comparator<? super T> c )
Vergleicht die Objekte mit einem externen Comparator. Falls die Objekte auch noch Comparable implementieren, wird diese Sortierordnung nicht genutzt.

Mein Objekt darf also kein Comparable implementieren, wenn ich über einen Comparator sortieren möchte? Oder ist damit gemeint, dass dann die compareTo von dem Objekt nicht genutzt wird? Das zweite wäre meines erachtens sinnvoller.. wahrscheinlich hat es sich damit auch schon erledigt ^^'

Java ist recht komplex, aber wenn man erstmal schritt für schritt dem kern der sache naeher kommt sogar ganz logisch.. wobei mir irgendwie die records fehlen, das geht hier in java nur mit klassen oder?
 

Michael...

Top Contributor
Mein Objekt darf also kein Comparable implementieren, wenn ich über einen Comparator sortieren möchte? Oder ist damit gemeint, dass dann die compareTo von dem Objekt nicht genutzt wird? Das zweite wäre meines erachtens sinnvoller.. wahrscheinlich hat es sich damit auch schon erledigt ^^'
Letzteres, das hatte ich oben in meinem Kommentar zu Comparator mit "unabhängig von der im Objekt definierten compareTo()" gemeint.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Collections Welche Collection ist am geeignetsten? Java Basics - Anfänger-Themen 3
S Welche Collection? Java Basics - Anfänger-Themen 5
A Welche Collection? Java Basics - Anfänger-Themen 13
A Welche Collection soll ich nehmen? Java Basics - Anfänger-Themen 4
E welche Datenstruktur (Collection) Java Basics - Anfänger-Themen 4
S welche collection ? String und object Java Basics - Anfänger-Themen 5
G Collection, aber welche? Java Basics - Anfänger-Themen 6
R welche Collection nehmen? Java Basics - Anfänger-Themen 4
T Welche Collection nehmen? HashMap? Java Basics - Anfänger-Themen 4
C Java Array Struktur, welche ist wann besser? Java Basics - Anfänger-Themen 12
N Welche Objekte kann man zu einem Set hinzufügen Java Basics - Anfänger-Themen 4
berserkerdq2 Habe eine Klasse, welche public ist, diese hat eine public Methode, die nicht static ist. Wenn ich nun versuche aufzurufen Probleme? Java Basics - Anfänger-Themen 8
berserkerdq2 Habe zwei exceptions, welche ist ein Kommunikationsfehler und welche ein Ausgabefehler? Java Basics - Anfänger-Themen 4
G Welche Attribute kommen in den Konstruktor? Java Basics - Anfänger-Themen 5
Jambolo Methode, welche die 3 letzten Parameter Werte speichert Java Basics - Anfänger-Themen 20
Q SMS basierte Applikationen, welche Programmiersprache? Java Basics - Anfänger-Themen 8
Igig1 Welche Werte sind als default Werte in einem Array, der als Datentyp eine Klasse hat? Java Basics - Anfänger-Themen 1
D Welche GUI Library für eine Client Server Chat App Java Basics - Anfänger-Themen 14
H Welche Werte bei Objekterzeugung eingeben? Java Basics - Anfänger-Themen 2
Arita welche Fehler gibt es noch? wie kann ich es noch vervollständigen Java Basics - Anfänger-Themen 15
tony241188 Implementieren Sie die Klasse Hersteller, welche die folgenden Elektrogeräte produziert Java Basics - Anfänger-Themen 3
FelixN Teilsummenproblem / welche Datenstruktur Java Basics - Anfänger-Themen 2
P Welche Zeile in Tadople gibt einen compiler error? Java Basics - Anfänger-Themen 5
W Welche Komponente ist geeignet? Java Basics - Anfänger-Themen 1
A Welche Operation ist das? Java Basics - Anfänger-Themen 2
J Welche Java-Version installieren Java Basics - Anfänger-Themen 9
M Implementieren einer Datenstruktur, welche nur 5 Objekte speichert Java Basics - Anfänger-Themen 3
M Ausgabe einer Liste welche mehrere Stacks enthält Java Basics - Anfänger-Themen 3
K GUI Entwicklung - Welche Richtung passt für euch zum mobilen Zeitalter? Java Basics - Anfänger-Themen 4
T Datenbank | Welche am Sinnvollsten? Java Basics - Anfänger-Themen 5
S Welche Verteilung? Java Basics - Anfänger-Themen 1
L Welche Methode? Java Basics - Anfänger-Themen 7
O Methoden welche ich implementier Java Basics - Anfänger-Themen 11
A Wie erkennt die JVM welche class verwendet werden muss? Java Basics - Anfänger-Themen 3
M JDK installieren Welche Software bei XP? Java Basics - Anfänger-Themen 5
H Welche IDE zum Buch "Programmieren mit Java" von Reinhard Schiedermeier des Verlags Pearson Studium Java Basics - Anfänger-Themen 19
U Best Practice Fehleranalyse, welche Fehler macht Ihr beim Lernen bzw. auch später Java Basics - Anfänger-Themen 12
E jProgressbar, 6 Versuche, welche value angeben ? Java Basics - Anfänger-Themen 3
M Welche Entwicklungsumgebung? Java Basics - Anfänger-Themen 32
I Welche Schleife/Bedingung nehme ich her Java Basics - Anfänger-Themen 5
C Methoden Welche JSoup Methoden Und Parameter für diese HTML Tags Java Basics - Anfänger-Themen 4
K Erste Schritte Java lernen - Welche Bücher? Java Basics - Anfänger-Themen 1
P welche Komponente ist im Layout? Java Basics - Anfänger-Themen 2
TheMenox Methoden Bestimmung an welche Methode eine andere Methode ihren Wert weitergeben soll Java Basics - Anfänger-Themen 35
K Methoden mit den Namen accept. Welche Funktion haben diese? Java Basics - Anfänger-Themen 2
G Lambda Ausdruck: Welche Methode ist die Richtige? Java Basics - Anfänger-Themen 1
J Welche Methoden laufen im neuen thread ?? Java Basics - Anfänger-Themen 9
S Welche Datenstruktur ist die optimalste um Funktionen fuer bestimmte Wertebereiche abzurufen..? Java Basics - Anfänger-Themen 5
G Welche Java-Version auf meinem Rechner? Java Basics - Anfänger-Themen 2
Z Methoden Zugriff mit Klasse 3 auf Methode von Klasse 2 welche in Klasse 1 erzeugt wird Java Basics - Anfänger-Themen 6
A Klassen welche Klassen importiert Eclipse automatisch Java Basics - Anfänger-Themen 2
V welche Methode am besten sich für JPG einfügung in Java anzugewöhnen ? Java Basics - Anfänger-Themen 4
M Welche externen Bibliotheken sind in Java sehr zu empfehlen? Java Basics - Anfänger-Themen 4
I Grafische Benutzeroberflächen - welche Komponente nehme ich am besten? Java Basics - Anfänger-Themen 13
G Welche JAVA IDE? Java Basics - Anfänger-Themen 3
S Klassen Zugriff auf Attribute einer zweiten Klasse, welche durch dritte gesettet wurden? Java Basics - Anfänger-Themen 2
E wann welche Konstanten verwenden? Java Basics - Anfänger-Themen 7
K Welche Java Version ist die richtige Java Basics - Anfänger-Themen 3
V Welche Exceptions müssen importiert werden? Java Basics - Anfänger-Themen 3
A Design Pattern - Welche? Java Basics - Anfänger-Themen 33
C Datenbank - Welche Java Basics - Anfänger-Themen 5
S Welche Art von Liste? Java Basics - Anfänger-Themen 3
S Eigene Exception Schreiben und Welche Auslösen wie ? Java Basics - Anfänger-Themen 7
A Wenn genau welche Liste verwenden? Java Basics - Anfänger-Themen 6
T Welche Schleife? Java Basics - Anfänger-Themen 6
P Java Stream, wann welche Stream verwenden? Java Basics - Anfänger-Themen 3
S Input/Output Welche Möglichkeiten Eingabe von User abfragen Java Basics - Anfänger-Themen 5
P Swing - Welche Klasse für ausgeben von Ergebnissen? Java Basics - Anfänger-Themen 3
R Welche Datenstruktor für diese Liste? Java Basics - Anfänger-Themen 6
B Erste Schritte Welche Kenntnisse brauche ich für diese Programmidee? Java Basics - Anfänger-Themen 4
P Vererbung herausfinden welche Klasse was erbt Java Basics - Anfänger-Themen 3
K welche art von Liste für TableModell Java Basics - Anfänger-Themen 2
D Welche API für komplexe XML-Struktur? Java Basics - Anfänger-Themen 25
S welche Programmstruktur? Java Basics - Anfänger-Themen 8
M Welche Datenbank? Java Basics - Anfänger-Themen 5
B Welche Themengebiete benötige ich? Java Basics - Anfänger-Themen 7
StupidAttack Gson, welche Datenstruktur? Java Basics - Anfänger-Themen 4
H Welche Art der Ein/Ausgabe Java Basics - Anfänger-Themen 2
D Welche Datenstruktur für welche Problemstellung? Java Basics - Anfänger-Themen 10
U Welche(s) Framework(s) wären geeignet? Java Basics - Anfänger-Themen 8
StrikeTom Welche Dateitypen unterstützt JMF (Java Media Framework)? Java Basics - Anfänger-Themen 6
A Welche UML Software benutzt ihr / ist empfehlenswert? Java Basics - Anfänger-Themen 2
N Welche Datenstukturen und Methoden Java Basics - Anfänger-Themen 3
L Auswahl auf welche Art gespeichert werden soll Java Basics - Anfänger-Themen 6
B Welche Java-Installation ist aktiv? Java Basics - Anfänger-Themen 2
B Finden gemeinsamer Kanten: welche Datenstruktur ? Java Basics - Anfänger-Themen 9
S Welche möglichkeiten gibt es eine Zahl zu spiegeln? Java Basics - Anfänger-Themen 17
U Welche Seite für Anfänger Java Basics - Anfänger-Themen 11
K Welche Entwicklungsumgebung für Einsteiger? Java Basics - Anfänger-Themen 16
S Webapplikation welche alternative zu gwt? Java Basics - Anfänger-Themen 2
cowabunga1984 Unit-Testing - Welche Testfälle sind relevant? Java Basics - Anfänger-Themen 4
S Welche Methode in JFrame überschreiben? Java Basics - Anfänger-Themen 12
H Designfrage: Welche Liste? Java Basics - Anfänger-Themen 3
Z Welche IO-Klasse verwenden? Java Basics - Anfänger-Themen 2
G Welche Datenstruktur ( Sets / Maps)? Java Basics - Anfänger-Themen 10
M Der Java Schlüsselwort null; ?Welche Anweisung und Sinn? Java Basics - Anfänger-Themen 12
G Herausfinden, welche Componente als LETZTES focus hatte Java Basics - Anfänger-Themen 2
H Welche PDF Biblothek? Java Basics - Anfänger-Themen 6
G Variable welche in anderer Klasse liegt, verändern. Java Basics - Anfänger-Themen 2
G Frage:Welche Methodne kann man eine Zahl bzw. ein String Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben