Collections Sortieren von 3 Collections nach "einer Sortierung"

Sathanas

Neues Mitglied
Hi zusammen,

sorry für die seltsame Überschrift aber mir fällt keine bessere Beschreibung ein 😉 Ich sitz grad an nem kleinen Problem mit dem sortieren von Arraylists.
Folgende Situation:

Ich habe 3 Arraylists

Java:
ArrayList<Integer> lines = new ArrayList<Integer>();
ArrayList<ArrayList<Integer>> index = new ArrayList<ArrayList<Integer>>();
ArrayList<String> indexToString = new ArrayList<String>();

In der indexToString stecken jetzt einige Strings drin die ich alphabetisch sortieren muss. Geht z.B. über
Java:
Collections.sort()

Problem ist jetzt aber, dass ich die anderen beiden Arraylists "genauso" sortieren muss. Sprich wenn ich in indexToString platz 0 mit 2 tausche muss ich auch die Elemente 0 und in lines und index tauschen.

Allerdings habe ich jetzt keine intuitive Lösung dafür. Meine Idee bisher war irgendwoher einen SortierAlgo nehmen und ihn so anpassen, dass die beiden anderen einfach mit sortiert werden (Da würd mir auch ein Bubblesort reichen 😉)

Aber vielleicht biete Java ja irgendwas einfachereres.

Gruß und schöne Ostern,
Sathanas
 
vermutlich ist das ein konzeptionelles problem. mir scheint es, als hätten die drei listen ja irgendwas gemeinsam (gleiche Anzahl, über listenindex gemappt etc). warum sparst du dir die 3 listen nicht einfach und machst eine Liste
Code:
ArrayList<Entity> ....
. Deine Klasse Entity (oder was immer du auch darstellen willst) sieht dann wie folgt aus:

Java:
public class Entity {

   private int line;
   private ArrayList<Integer> index;
   private String indexToString;

   // Konstruktoren, Getter und Setter...

}

die eine Liste kannste dann sortieren wie du willst. Dein Mapping bleibt logischerweiße immer gleich 🙂

edit: Comparable natürlich noch implementieren und compareTo überschreiben
 
Zuletzt bearbeitet:
Hi nrg,

danke für die Antwort. Mir ist über Nacht noch eine andere Lösung eingefallen.

Mir ist aufgefallen, dass jedes Element in der StringArrayList nur einmal vorkommt. Also habe ich vor dem sortieren einfach eine Kopie angelegt und anschließend geschaut wohin was getauscht wurde. Elegant ist sicherlich was anderes, aber es läuft 😉


Gruß,
Sathanas
 

Zurück
Oben