Java: Objektarray nach Attribut der Klasse sortieren?

...komplette Frage anzeigen

3 Antworten

Bei ordentlicher OOP würdest DU den Vergleichoperator der Klasse a überladen, sodaß verschiedene Instanzen von a vergleichbar werden. Danach wendest DU in B einen Standardsortieralgorithmus an, der die Sortierung vornimmt.

Ich nutze Java nicht, aber ich vermute, daß es sehr wohl generische Sortieralgorithmen gibt, oder aber eine Methode des Arrays kann sortieren, wenn auf den Typen ein Vergleich definiert ist.

Antwort bewerten Vielen Dank für Deine Bewertung

mit array[i].zeit sprichst du die Variable zeit an.

Nun musst du für dich einen Sortieralgorithmus finden und dann dementsprechend sortieren.a

Für Anfänger ist Insertionsort oder Bubblesort die einfachste Wahl.

Bei Bubblesort vertauschst du solange mit dem Nachbarn, bis es passt.

Antwort bewerten Vielen Dank für Deine Bewertung
SirNik 10.10.2017, 20:55

einfach ausgedrückt ^^

0
SirNik 10.10.2017, 21:03

mrboese hätte da einen fortgeschritteneren Ansatz

0
Etter 11.10.2017, 19:19

Warum so umständlich (sofern der Sortieralgorithmus nicht umbedingt selbst geschrieben werden muss)? Comperator-Interface implementieren und in der compareTo-Methode angeben, was wie verglichen werden soll.

Anschließend müsste es mittels Arrays.sort() sortierbar sein.

0
SirNik 11.10.2017, 20:26
@Etter

Weil, wenn der Fragesteller so eine Frage stellt, dann wird er mit sowas noch nicht umgehen können. Und so basics wie etwas zu sortieren muss man von Hand können. Mit comparatore oder comparable kann man dann immer noch anfange, wenn man mehr OOP macht, statt basics zu lernen

0
Etter 12.10.2017, 16:26
@SirNik

"Und so basics wie etwas zu sortieren muss man von Hand können."

Bloß dass die einfachen Sortieralgorithmen (wie etwa Bubble- oder Insertionsort) ziemlich ineffektiv sind. Vergleichsweise einfach und effektiv wäre vll. Mergesort, was dafür Speicher verballert. Blieben wohl noch die "vernünftigen" Sortieralgorithmen (Heap- und Quicksort), welche aber nicht so einfach zu implementieren sind.

"Weil, wenn der Fragesteller so eine Frage stellt, dann wird er mit sowas noch nicht umgehen können."

Das gleiche würde ich bei Sortieralgorithmen anführen. Und gerade wenns darum geht nur mal fix was zu sortieren ist es unnötiger Aufwand.

0
SirNik 12.10.2017, 17:00

🙄Ja, bring einem Grundschüler doch gleich Quantenmechanik bei....So ein bullshit; es geht um das LERNRN. Man lernt auch zuerst 1+1 und fängt nicht mit "Rechnen mit Buchstaben" an...man man man... Für absolute Anfänger sind deine genannten nicht so trivial wie du denkst...und bei dem bisschen was er da macht sind meine genannten Sortieralgorithmen mehr als ausreichend....

0
Etter 12.10.2017, 17:44
@SirNik

"Für absolute Anfänger sind deine genannten nicht so trivial wie du denkst"

Nja und einem absoluten Anfänger zu erklären welcher Sortieralgorithmus wie gut ist und den dann noch zu implementieren ist natürlich ne Grundrechenart xD

"und bei dem bisschen was er da macht sind meine genannten Sortieralgorithmen mehr als ausreichend...."

Wieviele Elemente haut er denn in sein Array? 10? 20? 3000? 2^20?

Dass er anscheinend schon versucht mit OOP zu arbeiten ist dir aber schon bewusst oder?

"Und wenn du meinst du kannst hier bessere Antworten geben, dann gib verdammt nochmal dem Fragesteller eine, aus deiner Sicht vernünftige"

Wozu? Die Antwort wurde schon von "mrboese" bzw. von "KarlRanseierll gegeben.

"bemängel nicht die"

Also darf man keinerlei Kritik äußern bzw. ne Möglichkeit geben wie es einfacher geht?

Wäre es also auch falsch jemanden zu sagen, dass seine Antwort mit 200 Zeilen Quellcode unnötig wäre, weil es auch in 50 gehen würde? Wenn ja, dann scheint das die falsche Welt zu sein.

"Hab mich echt noch nie so über jemanden Aufregen müssen, echt ey...sry"

Dann sollteste vll an deiner Kritikfähigkeit arbeiten, wenn dich selbige so sehr auf die Palme bringt.

Witzigerweise habe ich nichtmal gesagt, dass die Antwort falsch ist. Nur dass sie mehr Arbeit bedeutet, aber anscheinend reicht das heute schon um Leute wütend zu machen.

Schönen Tag noch ^^

0
SirNik 12.10.2017, 18:35
@Etter

tut mir leid, hab überreagiert, nicht mein tag heute; 

im Grunde hast du Recht, aber wenn er nicht vllt weiß, wie man jetzt auf die Variable einer Klasse zugreift, geschweige denn, wie man sortieren kann, dann lohnt es sich eben sich damit zu beschäftigen und einfach und unvernünftig an zu fangen. 

Wenn er soweit ist, kann er natürlich auch mit fortgeschritteneren Konzepten arbeiten, also mit Comparable oder Comparator arbeiten oder mit besseren Sortier algorithmen.
Besserer Lerneffekt finde ich allerdings, wenn man unten anfängt.

^^ Nochmals, tut mir leid 

0
Etter 12.10.2017, 19:23
@SirNik

"^^ Nochmals, tut mir leid"

Kein Ding. Da bin ich vll. auch zu sehr auf Konfrontation gegangen ^^'

Ich find halt beides wichtig, weiß aber vorallem auch wie schwer es ist die Suchalgorithmen zu implementieren. Lernen sollte man aber definitiv beides ^^

1
SirNik 12.10.2017, 17:02

Und wenn du meinst du kannst hier bessere Antworten geben, dann gib verdammt nochmal dem Fragesteller eine, aus deiner Sicht vernünftige, Antwort und bemängel nicht die, die versuchen ihm zu helfen auf einfache Art.....Hab mich echt noch nie so über jemanden Aufregen müssen, echt ey...sry

0

Was möchtest Du wissen?