IComparer |
Name | Description |
---|---|
Compare | Compares two values and returns a value indicating whether one is less than, equal to, or greater than the other. |
This interface is used in conjunction with the CorArray.Sort and CorArray.BinarySearch methods. It provides a way to customize the sort order of a collection. See the Compare method for notes on parameters and return value.
The default implementation of this interface is the Comparer class.
The following code example demonstrates the use of the IComparer interface to sort an ArrayList object. In this example, the IComparer interface is implemented using the CaseInsensitiveComparer class to reverse the order of the contents of the ArrayList.
There are two modules created for this example. A BAS module containing the Main method and a Class module implementing the IComparer interface.
The following is a Visual Basic Class module named MyReverserClass.
Option Explicit Implements IComparer Private mComparer As New CaseInsensitiveComparer Public Function Compare(ByRef a As Variant, ByRef b As Variant) As Long Compare = mComparer.Compare(b, a) End Function ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' IComparer ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Private Function IComparer_Compare(a As Variant, b As Variant) As Long IComparer_Compare = Compare(a, b) End Function
The following is a Visual Basic BAS module containing Main start-up method.
Public Sub Main() Dim List As New ArrayList List.Add "The" List.Add "quick" List.Add "brown" List.Add "fox" List.Add "jumps" List.Add "over" List.Add "the" List.Add "lazy" List.Add "dog" Debug.Print "The ArrayList initially contains the following values:" PrintIndexAndValues List List.Sort Debug.Print "After sorting with the default comparer:" PrintIndexAndValues List List.Sort Comparer:=New MyReverserClass Debug.Print "After sorting with the reverse case-insensitive comparer:" PrintIndexAndValues List End Sub Private Sub PrintIndexAndValues(ByVal List As ArrayList) Dim i As Long For i = 0 To List.Count - 1 Debug.Print CorString.Format(t("\t[{0}]:\t{1}"), i, List(i)) Next Debug.Print End Sub ' This code produces the following output. ' ' The ArrayList initially contains the following values: ' [0]: The ' [1]: quick ' [2]: brown ' [3]: fox ' [4]: jumps ' [5]: over ' [6]: the ' [7]: lazy ' [8]: dog ' ' After sorting with the default comparer: ' [0]: brown ' [1]: dog ' [2]: fox ' [3]: jumps ' [4]: lazy ' [5]: over ' [6]: quick ' [7]: the ' [8]: The ' ' After sorting with the reverse case-insensitive comparer: ' [0]: the ' [1]: The ' [2]: quick ' [3]: over ' [4]: lazy ' [5]: jumps ' [6]: fox ' [7]: dog ' [8]: brown