PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Java] Sortierung manipulieren?


Monger
2006-05-13, 21:05:37
Hallo,

ich stehe hier vor einer Gewissensfrage. Ich könnte jetzt Quick n Dirty etwas fummeln, aber ich habe den Verdacht, dass das mir über kurz oder lang das Genick brechen wird, deshalb wollte ich mal fragen ob jemand vielleicht eine saubere und elegante Lösung für mein Problem kennt...


Im Prinzip habe ich eine Liste von Personen (die das Comparable Interface implementieren), die je nach gewählter Einstellung so oder so sortiert werden sollen. Diese Einstellung wird einmalig getroffen, und nie wieder verändert. All diese Einstellungen möchte ich auch speichern können.

Mein Problem ist, dass meine Einstellungen im Prinzip nichts mit den Personen zu tun haben. Es wäre also doof, in der Personenklasse ein statisches "verhalte dich anders, wenn anderswo ein Knopf gedrückt wird" Attribut stände. Das müsste dann ja auch ein statisches Attribut sein, weil es für jedes gleich ist, aber wie steht es denn mit der Serialisierung von statischen Attributen?

Ich habe daran gedacht, die #compareTo() Methode zu überladen, aber ich bin mir nicht ganz sicher: wenn ich überladene Objekte serialisiere und dann wieder deserialisiere, geht das wirklich glatt? Oder kann da was in die Brüche gehen, weil er die zugehörige Klasse nicht findet?

Wäre vielleicht ein Singleton eine Lösung? Das könnte ich in der CompareTo() Methode auswerten. Wie sieht es da mit der Serialisierung aus?
Mir fehlt einfach grade die Idee, wie ich das sauber implementieren soll, deshalb wäre ich auch für Beispiele dankbar.

Trap
2006-05-13, 21:52:31
Wenn es nichts mit der Person zu tun hat und du deshalb das nicht in der Person-Klasse oder in den Person-Objekten implementieren willst, dann musst du die Sortiereinstellung als Comparator übergeben.

Den Comparator speicherst du dann halt an der Stelle wo er hingehört.

Spricht da irgendwas dagegen?

Monger
2006-05-14, 00:16:24
Trap[/POST]']
Spricht da irgendwas dagegen?
Die Idee finde ich deshalb nicht so prickelnd, weil ich sehr oft und an sehr vielen Stellen sortiere, und jetzt ziemlich viel umwerfen müsste. Wenn es sich letztendlich als sauberste Lösung darstellt, mache ich genau das.

Der Punkt ist eher: dass die Personenliste so rum oder so rum sortiert wird, ist im Prinzip schon eine Eigenschaft einer Person - aber das was sie auslöst nicht.

Um genau zu sein geht es darum, ein bestimmtes Attribut der Person bei der Sortierung zu berücksichtigen oder eben nicht. Es hat also schon mit der Person zu tun.

Aber mir kommt da grade so ein unheimlich simpler Gedanke...
Wieso gebe ich das nicht gleich im Konstruktor des Personen-Objekts an? Da kann ich es gleich als final deklarieren, und so verhindern dass die Sortierung im Nachhinein umgeworfen wird. Der einzige Nachteil ist, dass unnötig Speicherplatz verbraten wird, weil jedes Personenobjekt eine Information trägt die eigentlich nur einmalig gebraucht ist, aber bei einem Bool Wert ist das vielleicht nicht ganz so kritisch...