ArrayList sortieren

Status
Nicht offen für weitere Antworten.

njoerd

Mitglied
Also ich habe folgendes Problem.
Ich habe in einer Arrayliste koordinaten Paare gespeicher, jetzt möchte ich diese im kreis anorden, dazu bestimme ich ganz einfach welches der 2 zu vergleichenden koordinaren links und welches rechts liegt.
Dazu habe ich den java.util.Comparator überlager(heißt das so?) so weit funktioniert das jetzt auch, aber leider ist jetzt nicht garantiert das das letze und das Erste element in meiner ArrayListe auch der Bedingung von links und rechts genügen. Hat wer eine Idee oder hinweis für einen Sortieralgorithmus der auch das letzte mit dem ersten Element überprüft und ggf. vertauscht?.

grüße aus dem sonnigen Wien und lg
 

WieselAc

Top Contributor
Also ein vernünftiger Algorithmus vergleicht immer alles so, dass das Ergebniss stimmt.

Was benutzt du denn zum Sortieren? Was Selbstgeschriebenes? Oder eine Java eigene Methode?

Poste am besten auch mal deine compare-Methode oder noch besser ein kleines Beispiel.
 

njoerd

Mitglied
Also in meiner Liste habe ich die Punkte P_1 bis P_n
P_0 ist mein "zentrum", jetzt möchte ich diese dem winkel nach sortiert haben, winkel sind aber schlecht,(zu ungenau für meine zwecke) Eigentlich genügt mir die aussage ob P2, links oder rechts von der gerade p1,p0 liegt, wenn links dann passt das wenn rechts dann muss man p1 mit p2 tauschen. Das funktioniert auch nur ist wenn ich das mit
Code:
java.util.Collections.sort
mache dann ist nicht garantiert das das das auch mit dem ersten und dem letzten Element gemacht wird. ich brauche das aber.

Zum vergleichen hab ich den
Code:
java.util.Comparator
überlagert


ein kleine Grafik
Testv.jpg


Ich hoffe man versteht was ich will :)
 
B

bygones

Gast
Die ansaetze soweit ich sie seh hier sind schon richtig. eine collection am einfachsten ueber Collections.sort sortieren lassen (siehe FAQ beitrag). Den Comparator brauchst du dann wenn die Objekte a) kein eigene definierte Ordnung haben oder b) du eine andere als die natuerliche Ordnung haben willst

njoerd hat gesagt.:
mache dann ist nicht garantiert das das das auch mit dem ersten und dem letzten Element gemacht wird.
das versteh ich nicht... es werden beim sortieren im grunde alle elemente vergleicht, also auch das erste und das letzte...
 
G

Guest

Gast
das erste und das letzte werden schon irgendwann verglichen, aber nicht das erste mit dem letzten und das ist mein problem. Der Sortieralgorithmus müsste im "kreis" sortieren, also wenn er am ende ist wieder am anfang anfangen bis die ordnung wie gewünscht ist
 
B

bygones

Gast
Anonymous hat gesagt.:
das erste und das letzte werden schon irgendwann verglichen, aber nicht das erste mit dem letzten und das ist mein problem. Der Sortieralgorithmus müsste im "kreis" sortieren, also wenn er am ende ist wieder am anfang anfangen bis die ordnung wie gewünscht ist
oeh... das momentan fehlende mittagsessen mag meine gedanken kraft trueben, aber sortierer suchen der reihe nach das kleinste elemente aus der liste...

d.h. wenn einmal die liste sortiert ist, muss er nicht wieder von vorne anfangen.... und es wird auch das erste mit dem letzten verglichen, ansonsten waere eine sortierung nicht moeglich !
 
G

Guest

Gast
versuche es noch einmal zu erklären und habe dazu ein neues bild gemalt
kreis.jpg


Ich hätte jetzt gerne die punkte 1-5 gerne so sortiert das diese im Uhrzeiersinn in meiner Arrayliste stehen. Im moment stehen sie willkürlich. Sortiere ich diese wie oben wäre auch folgende Reihenfolge richtig

Code:
1 2 3 4 5

Jedoch würde der knoten 1 und 5 auch verglichen werden stimmt die bedingung nicht mehr, da 1 zu 5 jetzt rechts liegt und nicht links, obwohl die sortierung ansonsten richtig ist. Die gesuchte Reihenfolge zu dem Bild wäre also
Code:
2 3 4 1 5
 
B

bygones

Gast
wir kommen der sache naeher.

dein erstes sortieren ist ueber die natuerliche ordnung, ich geh mal davon aus du hast Integer objekte in der liste und rufst einfach Collections.sort auf.
Die natuerliche Ordnung von integer ist der zahlenwert, daher 1 2 3 4 5

was du nun willst ist eine spezielle sortierung. D.h. du brauchst entweder einen Comparator oder deine Klasse implementiert das Comparable interface.

Mal ein bsp mit Comparator (sagen wir deine Punkte werden durch Point Instanzen repraesentiert)

Code:
public UhrzeigerSinn implements Comparator<Point> {
   public int compare(Point o1, Point o2) {
		// nun vergleichst du die beiden punkte so wie du willst... und gibst dann an ueber den return wert ob o1 kleiner ist als o2 oder andersrum
	}
}

nun kannst du dann deine Liste sortieren lassen
Code:
List<Point> myPointList = new ArrayList<Point>();
// liste fuellen
Collections.sort(myPointList, new UhrzeigerSinn());
nun ist die liste so sortiert, wie du es definiert hast, also dann auch 2 3 4 1 5
 
G

Guest

Gast
in meiner liste sind objecte von koordinaten paaren, das stimmt und soweit hab ich das ja schon gemacht, den comperator überlagert mit meiner Bedingung welche auch so sortiert wie sie soll, nur eben müsste die sortierungsbedingung auch zw. erstem und letzen listeneintrag stimmen und das muss eben mit
Code:
Collections.sort
nicht sein.

also die Knotennummern sollten im Uhrzeigersinn sortiert werden, sicher sind die Knotennummern in der Reihenfolge
Code:
1 2 3 4 5
auch auf eine art und weise im Uhriegersinn, aber zw. 5 und 1 sind sie eben nicht im Uhrzeigersinn orientiert (ich müsste bei dieser sortierung nicht nur einmal im kreis fahren, sondern mehrmals) und das ist mein problem
 

WieselAc

Top Contributor
Hab mir da jetzt echt ein paar gedanken drüber gemacht, aber ich versteh es leider immer noch nicht wie du da sortieren willst.

Was ich jedoch weiß ist, das Collections.sort() klappt. Wenn nicht ist dein Sortierkriterium falsch oder du hast andere Erwachtungen.. Wie auch immer in dem Fall für ich dir raten schreib die ein eigenes Verfahren, da weißt du 100% was passiert.
 
B

bygones

Gast
du verstehst nicht was ich meine.

Collections.sort klappt und sortiert alles (!) nach einem definierten kriterium. Es beruecksichtigt ALLE elemente der liste egal an welcher reihenfolge sie stehen.

Also du hast Koordinaten. Die muessen ja als Klasse vorliegen - nutzt die Point oder deine eigene Klasse dafuer ?

die frage die du dir stellen musst ist, was ist die mathematische definition, dass punkte im uhrzeiger voneinander liegen.

D.h. P1 ist dann links von P2 wenn Bedingung X vorhanden ist. Und genau diese Bedinungen X implementierst du dann in der compareTo methode. Die vergleicht zwei punkte und du sagst ihr wie zu vergleichen ist.

zb

sortiere mir alle punkte nach der X Koordinate:
Code:
public UhrzeigerSinn implements Comparator<Point> {
   public int compare(Point o1, Point o2) {
      return o1.x - o2.x;
   }
}

also.... nochmal langsam

sort sortiert wie du es ihm sagst, er sortiert komplett und beachtet alles. Du musst ihm sagen wie er sortieren soll, d.h. du musst mathematisch definieren, wann ein punkt im Uhrzeigersinn eines anderen punkts liegt !
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Sortieren und Selektieren einer ArrayList<Point3D> Allgemeine Java-Themen 6
L ArrayList sortieren Allgemeine Java-Themen 2
MiMa ArrayList sortieren?? Allgemeine Java-Themen 5
T Collections ArrayList Sortieren Allgemeine Java-Themen 4
K ArrayList sortieren Allgemeine Java-Themen 16
M ArrayList<String>, String häufigkeit sortieren Allgemeine Java-Themen 4
C ArrayList (mit Objekten) sortieren Allgemeine Java-Themen 12
N Zahlen in Strings einer ArrayList sortieren Allgemeine Java-Themen 14
V ArrayList sortieren Allgemeine Java-Themen 7
C ArrayList anhand von zwei Attributen sortieren Allgemeine Java-Themen 4
K ArrayList nach bestimmtem Muster sortieren Allgemeine Java-Themen 3
C ArrayList sortieren (mehrere Kriterien) Allgemeine Java-Themen 6
G ArrayList mit quicksort sortieren Allgemeine Java-Themen 9
C ArrayList nach Datum sortieren Allgemeine Java-Themen 7
O ArrayList sortieren Allgemeine Java-Themen 8
G ArrayList mit Indices parallel sortieren Allgemeine Java-Themen 8
M ArrayList sortieren - HashMap mit sort_id vorhanden Allgemeine Java-Themen 2
E Bitte um Rat: Sortieren mit ArrayList Allgemeine Java-Themen 2
S ArrayList nach mehreren Spalten sortieren? Allgemeine Java-Themen 13
M Eine ArrayList sortieren? Allgemeine Java-Themen 4
G probleme beim sortieren einer ArrayList Allgemeine Java-Themen 8
E ArrayList Matrix sortieren Allgemeine Java-Themen 4
M ArrayList oder LinkedList Allgemeine Java-Themen 10
A Einzelne Objekte und Unterobjekte einer ArrayList ausgeben Allgemeine Java-Themen 53
T Remove bei ArrayList funktioniert nicht Allgemeine Java-Themen 2
B Type mismatch: cannot convert from Graph.Edge to ArrayList<Graph.Edge> Allgemeine Java-Themen 21
R ArrayList Allgemeine Java-Themen 4
G jToggleButton in Array/ArrayList Allgemeine Java-Themen 12
J ArrayList, ganze Zeilen löschen oder überspringen Allgemeine Java-Themen 4
C ArrayList Problem Allgemeine Java-Themen 3
O Datentypen Wie kann ich den Typ einer ArrayList abfragen ? Allgemeine Java-Themen 7
S Best Practices CopyConstrutor mit ArrayList Allgemeine Java-Themen 1
S ArrayList Design Allgemeine Java-Themen 4
S Array dynamisieren oder ArrayList verwenden? Allgemeine Java-Themen 17
L ArrayList mit String Arrays in ein Array umwandeln Allgemeine Java-Themen 1
H Elemente aus ArrayList in Array speichern Allgemeine Java-Themen 8
MiMa Person in einer Arraylist hinzugügen mit Prüfung ? Allgemeine Java-Themen 6
X Adjazenzliste ohne ArrayList Allgemeine Java-Themen 6
X Output von ArrayList Allgemeine Java-Themen 3
H Stream in ArrayList umwandeln Allgemeine Java-Themen 2
H Mehrere Datentypen in einer Arraylist speichern Allgemeine Java-Themen 9
H Arraylist mit anderer ArrayList überschreiben Allgemeine Java-Themen 17
Curtis_MC Pointer mit ArrayList vergleichen Allgemeine Java-Themen 6
F ArrayList`s in Klassen mit Getter/Setter Allgemeine Java-Themen 8
W Array vs. ArrayList vs. HashMap Allgemeine Java-Themen 20
F Arraylist vollständig abspeichern und laden Allgemeine Java-Themen 1
R Arraylist in andere Klasse leiten und bearbeiten Allgemeine Java-Themen 10
D ArrayList Indexlänge ändern Allgemeine Java-Themen 2
E Elemente innerhalb einer ArrayList vergleichen Allgemeine Java-Themen 33
K ursprüngliche ArrayList ändert sich bei Übergabe in Methode Allgemeine Java-Themen 18
N Mehrdimensionale ArrayList mischen Allgemeine Java-Themen 10
S JTable - mehrere ausgewählte Rows in ArrayList Allgemeine Java-Themen 5
MiMa Date aus einer ArrayList<Date> holen ?? Allgemeine Java-Themen 5
MiMa ArrayList Rückgabewerte aus einer Funktion Allgemeine Java-Themen 15
L CSV File lesen, in ArrayList speichern und ausgeben Allgemeine Java-Themen 3
M Was geschieht mit Java-Klasse, die aus ArrayList entfernt wird? Allgemeine Java-Themen 10
M Methoden Generische Methode für ArrayList Allgemeine Java-Themen 7
P GUI: ArrayList anzeigen funktioniert nicht Allgemeine Java-Themen 5
H ArrayList: Leere Elemente finden? Allgemeine Java-Themen 2
GreenTeaYT Verständnisprobleme zur Arraylist Allgemeine Java-Themen 1
T Methoden Methode zum durchsuchen einer ArrayList Allgemeine Java-Themen 8
A Bestimmte Inhalte aus ArrayList 1 in ArrayList 2 kopieren Allgemeine Java-Themen 6
S Mehrdimensionales ArrayList ins HashSet Allgemeine Java-Themen 10
C ArrayList Allgemeine Java-Themen 8
Streeber Probleme mit AWT-EventQueue: ArrayList Elemente hinzufügen Allgemeine Java-Themen 1
F Methoden Arraylist weiterverwenden nach methoden Aufruf Allgemeine Java-Themen 2
Z NullPointerException beim Schreiben einer ArrayList in eine Datei Allgemeine Java-Themen 6
L Von ArrayList abgeleitete Klasse nur mit bestimmten Objekten füllen Allgemeine Java-Themen 1
K Array in ArrayList Allgemeine Java-Themen 16
Paul15 2D Arraylist in Jtable Allgemeine Java-Themen 1
Paul15 Arraylist 2D Allgemeine Java-Themen 8
B ArrayList in ein Objekt legen Allgemeine Java-Themen 1
Neumi5694 Datentypen ArrayList vs TreeMap Allgemeine Java-Themen 6
F ArrayList Allgemeine Java-Themen 11
X ArrayList will nicht so wie ich will. Hilfe Allgemeine Java-Themen 8
N ArrayList in eigenem Object nicht richtig serialisierbar Allgemeine Java-Themen 14
M ArrayList mit verschiedenen Datentypen in String konvertieren Allgemeine Java-Themen 10
Z Elemente einer ArrayList von rechts wegnehmen Allgemeine Java-Themen 5
W Arraylist Text Suchen und Datei löschen Allgemeine Java-Themen 5
R ArrayList und HashMap Allgemeine Java-Themen 7
T ArrayList zeilenumbruch entfernen Allgemeine Java-Themen 13
D Arraylist/For Schleife/Scanner Allgemeine Java-Themen 30
E ArrayList Anzahl der gleichen Elemente Allgemeine Java-Themen 4
Doopy ArrayList plötzlich leer Allgemeine Java-Themen 2
D Arraylist eigener Klasse an iReport übergeben Allgemeine Java-Themen 7
L ArrayList Inhaltstyp. Allgemeine Java-Themen 5
Z Klassen ArrayList selbst machen Allgemeine Java-Themen 5
J Arraylist speichern und laden? Allgemeine Java-Themen 5
C Generics Objekt in ArrayList Allgemeine Java-Themen 2
D ArrayList index auf gültigkeit prüfen Allgemeine Java-Themen 12
M ArrayList<String> Frage Allgemeine Java-Themen 7
O ArrayList kaputt?! Allgemeine Java-Themen 5
M ArrayList<Foo> in ein Foo[] konvertieren? Allgemeine Java-Themen 8
Bananabert Abstract ArrayList Allgemeine Java-Themen 4
A Collections Array-Elemente in ArrayList kopieren ohne Schleife Allgemeine Java-Themen 7
O ArrayList - Serialisierungs-Problem Allgemeine Java-Themen 11
M JTable + ArrayList Allgemeine Java-Themen 3
M Datentypen ArrayList in Integer konvertieren Allgemeine Java-Themen 3
O Collections ListIterator gibt Inhalt von ArrayList nicht aus Allgemeine Java-Themen 3
Madlip Variablen 3 Werte aus ArrayList und weiter ... Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben