Guten Tag,
Wir sollen Objekte nach einem xBeliebigen Attribut sortieren. Eine Aufgabe die erstmal ziemlich einfach klingt, ich aber dennoch Probleme bei der Umsetzung habe:
Ich habe eine Sorter-Klasse (ObjectSorter) ,eine zu sortierende Klasse (SortableObject) und eine Comparator-Klasse (ComparatorObject). Das Programm wird über die Konsole gesteuert und mittels einem Parameter kann man angeben, anhand welchen Attributes sortiert werden sollte.
Die zu sortierenden SortableObject’s sind in einer ArrayList gespeichert.
Sortiert wird mittels Collections.sort und dem ComparatorObject. Das ComparatorObject wird mit dem nötigen Argument initialisiert, nach was sortiert werden soll. in der Klasse selbst gibt es mehrere IF-ELSE Konstrukte in der compare-Methode welche anhand des gesetzten Parameters entscheiden, nach welchem Attribut sortiert werden soll.
Dies funktioniert und ist auch „einigermassen“ schön.
Es ist das Höchstmass an Flexibilität welches ich bis jetzt erreichen konnte. Füge ich z.B. der Klasse SortableObject ein weiteres Attribut hinzu, nach welchem ich danach auch sortieren möchte, muss ich zwangsweise den Comparator auch ändern.
Schön wäre es, einen Zugriff mittels Variable auf Attribute zu haben. Dies ist aber nur realisierbar, wenn ich die Attribute des SortableObject’s in eine Map packe was ich keinesfalls möchte.
Gibt es andere Möglichkeiten um dies in Java zu lösen oder habt ihr villeicht einen komplett anderen Ansatz für diese Problem?