Mega Code Archive

 
Categories / VB.Net Tutorial / Generics
 

Sort(IComparer(Of (T))) and the BinarySearch(T, IComparer(Of (T)))

Imports System Imports System.Collections.Generic Public Class LetterComparer     Implements IComparer(Of String)     Public Function Compare(ByVal x As String,ByVal y As String) As Integer _         Implements IComparer(Of String).Compare         If x Is Nothing Then             If y Is Nothing Then                  Return 0             Else                 Return -1             End If         Else             If y Is Nothing Then                 Return 1             Else                 Dim retval As Integer = x.Length.CompareTo(y.Length)                 If retval <> 0 Then                      Return retval                 Else                     Return x.CompareTo(y)                 End If             End If         End If     End Function End Class Public Class Example     Public Shared Sub Main()         Dim letters As New List(Of String)         letters.Add("A")         letters.Add("B")         letters.Add("C")         letters.Add("D")         Display(letters)         Dim dc As New LetterComparer         letters.Sort(dc)         Display(letters)         SearchAndInsert(letters, "E", dc)         Display(letters)         SearchAndInsert(letters, Nothing, dc)         Display(letters)     End Sub     Private Shared Sub SearchAndInsert(ByVal lis As List(Of String),ByVal insert As String, ByVal dc As LetterComparer)         Dim index As Integer = lis.BinarySearch(insert, dc)         If index < 0 Then             index = index Xor -1             lis.Insert(index, insert)         End If     End Sub     Private Shared Sub Display(ByVal lis As List(Of String))         Console.WriteLine()         For Each s As String In lis             Console.WriteLine(s)         Next     End Sub End Class