Med kunstig intelligens skaber HP’s nye OmniBook X 14 en unik og skræddersyet brugeroplevelse målrettet dem, der ønsker høj ydeevne og intelligente funktioner
Public Class Foobar Implements IComparable Private _a As Integer Private _b As String
Public Sub New() MyClass.New(0, "") End Sub
Public Sub New(ByVal a As Integer, ByVal b As String) _a = a _b = b End Sub
Public Property A() As Integer Get Return _a End Get Set _a = value End Set End Property Public Property B() As String Get Return _b End Get Set _b = value End Set End Property Public Function CompareTo(ByVal o As Object) As Integer Implements IComparable.CompareTo Return (_a - CType(o, Foobar).A) End Function Public Overloads Overrides Function ToString() As String Return ("(" & _a & "," & _b & ")") End Function End Class
Public Class FoobarAComparer Implements IComparer Public Function Compare(ByVal o1 As Object, ByVal o2 As Object) As Integer Implements IComparer.Compare Return (CType(o1, Foobar).A - CType(o2, Foobar).A) End Function End Class
Public Class FoobarRevAComparer Implements IComparer Public Function Compare(ByVal o1 As Object, ByVal o2 As Object) As Integer Implements IComparer.Compare Return -(CType(o1, Foobar).A - CType(o2, Foobar).A) End Function End Class
Public Class FoobarBComparer Implements IComparer Public Function Compare(ByVal o1 As Object, ByVal o2 As Object) As Integer Implements IComparer.Compare Return (CType(o1, Foobar).B.CompareTo(CType(o2, Foobar).B)) End Function End Class
Public Class FoobarRevBComparer Implements IComparer Public Function Compare(ByVal o1 As Object, ByVal o2 As Object) As Integer Implements IComparer.Compare Return -(CType(o1, Foobar).B.CompareTo(CType(o2, Foobar).B)) End Function End Class
Class ManySort Private Shared Sub print(ByVal descr As String, ByVal list As ArrayList) Console.Write(descr + ": [") For Each o As Object In list Console.Write(o) Next Console.WriteLine("]") End Sub Public Shared Sub Main(ByVal args As String()) Dim list As ArrayList = New ArrayList list.Add(New Foobar(5, "AAAAA")) list.Add(New Foobar(4, "BBBB")) list.Add(New Foobar(3, "CCC")) list.Add(New Foobar(2, "DD")) list.Add(New Foobar(1, "E")) print("Original", list) list.Sort print("After natural sort (= sort on A)", list) list.Sort(New FoobarRevAComparer) print("After reverse sort on A", list) list.Sort(New FoobarAComparer) print("After sort on A", list) list.Sort(New FoobarBComparer) print("After sort on B", list) list.Sort(New FoobarRevBComparer) print("After reverse sort on B", list) End Sub End Class
hvis man laver en Sort uden at angive en Comparer så bruger den CompareTo metoden i den klasse som man sorterer
hvis man angiver en Comparer i sin Sort så bruges dens Compare metode
Synes godt om
Slettet bruger
31. juli 2006 - 15:30#7
Hej
Kan: Public Class FoobarBComparer Implements IComparer Public Function Compare(ByVal o1 As Object, ByVal o2 As Object) As Integer Implements IComparer.Compare Return (CType(o1, Foobar).B.CompareTo(CType(o2, Foobar).B)) End Function End Class
ikke laves så property (B) sendes med. Således at det ikke er nødvendigt at lave en function til hver property?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.