ArrayList.Sort 方法 (IComparer)實例
項目中用到的一個ArrayList.Sort 方法 (IComparer)實例
Private Structure NodeItem
Dim lsid As Integer
Dim spno As String
Dim lstype As Integer
Dim workid As Integer
End Structure
![]()
![]()
Sub Main()
Try
Dim pArrayList As New ArrayList
![]()
Dim pNitem As New NodeItem
With pNitem
.lsid = 10000012
.spno = 200000
End With
pArrayList.Add(pNitem)
![]()
pNitem = New NodeItem
With pNitem
.lsid = 10000032
.spno = 200000
End With
pArrayList.Add(pNitem)
![]()
pNitem = New NodeItem
With pNitem
.lsid = 10000002
.spno = 200000
End With
pArrayList.Add(pNitem)
![]()
Dim pCompare As New LSIDCompareClass
pArrayList.Sort(pCompare)
![]()
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try
![]()
End Sub
![]()
Private Class LSIDCompareClass
Implements IComparer
![]()
Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer _
Implements IComparer.Compare
Dim yitem As NodeItem = CType(y, NodeItem)
Dim xitem As NodeItem = CType(x, NodeItem)
![]()
Return New CaseInsensitiveComparer().Compare(xitem.lsid, yitem.lsid)
End Function 'IComparer.Compare
![]()
End Class
Private Structure NodeItem
Dim lsid As Integer
Dim spno As String
Dim lstype As Integer
Dim workid As Integer
End Structure

Sub Main()
Try
Dim pArrayList As New ArrayList
Dim pNitem As New NodeItem
With pNitem
.lsid = 10000012
.spno = 200000
End With
pArrayList.Add(pNitem)
pNitem = New NodeItem
With pNitem
.lsid = 10000032
.spno = 200000
End With
pArrayList.Add(pNitem)
pNitem = New NodeItem
With pNitem
.lsid = 10000002
.spno = 200000
End With
pArrayList.Add(pNitem)
Dim pCompare As New LSIDCompareClass
pArrayList.Sort(pCompare)
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try
End Sub
Private Class LSIDCompareClass
Implements IComparer
Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer _
Implements IComparer.Compare
Dim yitem As NodeItem = CType(y, NodeItem)
Dim xitem As NodeItem = CType(x, NodeItem)
Return New CaseInsensitiveComparer().Compare(xitem.lsid, yitem.lsid)
End Function 'IComparer.Compare
End Class
關于IComparable 接口的備注:
定義一种特定于類型的通用比較方法,值類型或類通過實現此方法對其實例進行排序。
此接口由具有可排序值的類型實現。它要求實現類型定義單個方法 CompareTo,该方法指示當前實例在排序順序中的位置是位于同一类型的另一个對象之前、之后還是与其位置相同。實例的 IComparable 實現由 Array::Sort 和 ArrayList::Sort 等方法自動調用。
所有數值類型(如 Int32 和 Double)均實現 IComparable,這一點與 String、Char 和 DateTime 是相同的。此外,自定義類型還應提供自己的 IComparable 實現,以便允許對象實例進行排序。
-----------------------------------------------------------
佛对我说:你心里有尘。我用力的拭擦。

浙公网安备 33010602011771号