28 Gäste und 0 Benutzer online | Anmelden | Registrieren
Startseite Windows-Artikel Problemlösungen Einstellungen Anleitungen Hardware FAQ C#.NET Forum Gästebuch Programme Onlinetools Downloads Suche Links Impressum Kontakt Anmelden |
Zu den C#.NET-Artikeln Sortieren von Listen II - C# Am 10.10.2007 verfasst von Andreas Nägeli. Hits: 489 Im letzten Artikel haben wir eine Liste sortiert, indem wir in die Liste Objekte geschrieben haben, die wissen, wie sie zu sortieren sind. Dies geschah über das Interface IComparable. Diese Art von Sortierung hat den Nachteil, dass man in der Regel nur nach einem Kriterium sortieren kann. Praktischer wäre es, wenn man ein unabhängiges Objekt zur Verfügung hätte, dass weiß, wie zwei Objekte eines Datentyps zu sortieren sind. Man könnte dann je nach Kriterium eine andere Klasse oder Instanz als Sortiervorgabe wählen. Diese Möglichkeit wird mit dem Interface IComparer<> implementiert. Zunächst einmal benötigen wir wieder eine Datenklasse als Beispiel.
Wieder wird das Objekt beim Erstellen über den Konstruktor initialisiert und kann über die get-Methoden ausgelesen werden. Die eigentliche Sortiertlogik befindet sich nun ausgelagert in zwei verschiedenen Klassen, die nach verschiedenen Kriterien sortieren sollen. Eine nach Alter, die andere nach Vorname.
Zunächst ist wichtig, dass diese Klasse das Interface IComparer Eine zweite Klasse SortByVorname soll die Liste nach den Vornamen sortieren:
Hier nutzen wir aus, dass es die CompareTo-Methode bei Strings bereits gibt. Wir müssen sie nur noch mit den richtgen Parametern füttern. Wichtig ist hier, dass die Reihenfolge (eins mit zwei vergleichen, nicht umgekehrt) eingehalten werden muss. Wie benutzen wir diese Klassen jetzt? Nun, die Sort-Funktion der Liste, die wir im ersten Teil bereits verwendet haben, ist überladen. Als Parameter kann ein Objekt des Typs IComparer Mit diesem Programm können wir die funktionsweise nachvollziehen:
Zunächst füllen wir die Liste mit den zwei Einträgen vom letzten mal. Dann lassen wir die Liste erst nach Alter (mit einer neuen SortByAlter-Instanz) und danach nach den Vornamen sortieren (SortByVorname). Es wäre auch möglich, nur ein Objekt zu verwenden, dessen Sortierungsmodus geändert werden kann. Kommentiertes Codebeispiel herunterladen (CLSortII.rar, 16 KB, VS80) Bewertung dieses Artikels von 3 Benutzern: - 10 / 10 Punkte |
|
||||
2002 - 2008 Computerleben.net Sitemap |