![]() |
|
|
Themen-Optionen |
|
|
Nach oben #1 |
|
Gast
Beiträge: n/a
|
Moin
Ich würde gerne Daten in einem Array sortieren und weiß nicht wie, das Interface Comperator läßt mich nur zwei vergleichen. Ich stehe da jetzt nen bissle vor der Wand. Angenommen also, ich habe 20 Spalten in einem Array und möchte das sortieren, aber beispielsweise die ersten 10 Spalten zur Auswertung heranziehen, wie stelle ich das an? Also zwei Werte zu sortieren ist ganz gut gelöst durch Comperator, kann ich das irgendwie einfach erweitern? Danke! Basti |
|
|
|
Nach oben #3 |
|
Benutzer
Registriert seit: 30.11.2004
Beiträge: 97
|
Ich denke, da er von 20 Spalten sprach, dass er'n mehrdimensionales Array meint.
Also ich hab das selber geschrieben ... ist gar nicht schwer. Da ich die Methode so allgemein wie möglich halten wollte, habe ich vorrausgesetzt, dass alle Inhalte im Array die Schnittstelle Comperable implementieren. Du rennst dann durch dein "Ober-Array" und greifst aus den "Unterarrays" immer das i-te Element raus (i = die Spalte nach der du sortieren willst) ... castest die Objekte auf Comperable (muss ja gehen!) und dann vergleichst du die Inhalte mit der methde compareTo() (und da das ja Comperable-Objekte sind, haben die auf jeden Fall die Methode). und damit du das ganze auch ordentlich sortiert bekommst, benutzt du die Ergebnisse der Vergleiche einfach in nem Bubblesort (o.ä.) Und wenn du nun nach mehreren Spalten sortieren willst, rufst du die Methode zuerst mit der Spaltennummer auf, die die kleinere Priorität hat und dann nach oben durcharbeiten. geht einwandfrei. Und das Rückwärtssortieren kann man da auch noch ganz einfach einbauen. Dann kann man z.B. mit der methode das Array erst nach Spalte 2 und dann nach Spalte 3 vorwärts und dann nach Spalte 18 Rückwärts sortieren lassen (warum auch immer ... unsere Kunden wollten das so haben) |
|
|
|
|
|
Nach oben #4 |
|
Gast
Beiträge: n/a
|
Hallo,
ja ich meinte ein Array [7463][271] oder sowas. Stimmt, die Idee mit den einzelnen Elementen finde ich gar nicht schlecht. Sprich wenn ich dann irgendwo 5 Elemente vergleichen will, dann muss ich eine geschachtelte Schleife haben, beim letzten (also das mit der niedrigsten Prio) Element anfangen (Spalte), und das zum Vorgänger vergleichen und so weiter, bis ich beim ersten angekommen bin. Und das packe ich dann wieder in eine Schleife über alle Zeilen oder? Danke Basti |
|
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Zend Framework - Probleme mit Zend_Controller_RewriteRouter bzw. Form der URLs | Ben | PEAR, PECL und Frameworks | 12 | 24.12.2006 17:17 |
| Suche Hilfe: Angebot und Nachfrage berechnen | ljungi | Plauderecke | 6 | 17.12.2006 22:10 |
| Array in Bezug auf ein anderes sortieren... | code5 | PHP-Programmierung | 2 | 15.05.2006 15:56 |
| Array: Undefined Index | Skinwalker | PHP-Programmierung | 10 | 29.03.2006 14:23 |
| Ein Array in ein Array schreiben | bacarni | PHP-Programmierung | 2 | 07.02.2006 14:24 |