Ich habe ein Arraylist in dem Elemente einer eigenen Klasse gespeichert sind und möchte diese Sortieren. Ich habe schon ein bisschen dazu gecoded, allerdings werden die Elemente nur absteigend sortiert.
Bsp:
Klasse "Bruch" mit Zähler / Nenner als Int16
Zähler / Nenner als Klasseneigenschaft mittels Public Property zugreifbar
Sorter:
Public Class clsSort |
Implements IComparer |
|
Private _Order As SortOrder |
Private _nach As SortNach |
|
Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements System.Collections.IComparer.Compare |
If SortOrder.None Then Return 0 |
Dim result As Int16 = 0 |
|
If SortNach.Nenner Then |
'result = x - y |
result = x.nenner - y.nenner |
If SortOrder.Ascending Then Return result * -1 |
Return result |
End If |
|
If SortNach.Zähler Then |
'result = x - y |
result = x.zahler - y.zahler |
If SortOrder.Ascending Then Return result * -1 |
Return result |
End If |
|
End Function |
End Class
|
Weitere Infos:
SortNach ist eine eigene "Enum" mit den möglichen Werten "Zähler" und "Nenner"
Die eigenschaften SortNach und SortOrder werden mit
public property verändert
Die Sortierung wird mit
AL.sort(sorter)
verwirklicht, wobei: AL => ArrayList mit clsBruch-Elementen
sorter =>clsSorter
Das Problem: Das ArrayList wird nur nach Zähler und absteigend sortiert - auch, wenn ich die Sortieroptionen änder.
Zum Testen habe ich mir 10 clsBruch-Zahlenpaare mit zufälligen Zählern / Nennern erstellen lassen