对AarrayList进行排序
2006-04-19 11:42
99 查看
对AarrayList进行排序
要对ArrayList进行排序还不容易吗?用Sort()方法。非常容易解决的。但是事情真的那么简单吗?
如果情况是这样的:
Dim al As New System.Collections.ArrayList
Dim syncal As System.Collections.ArrayList
syncal = System.Collections.ArrayList.Synchronized(al)
syncal.Add("abc")
syncal.Add("def")
syncal.Add("hijklmnop")
要进行排序,就这样调用Sort()方法:
syncal.Sort()
这样作当然是正确的,但是如果需要的是倒序又该怎么办?答案是实现System.Collections.IComparer接口。如下所示:
Public Class DESC
Implements System.Collections.IComparer
Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements System.Collections.IComparer.Compare
If x > y Then
Return -1
End If
If x < y Then
Return 1
End If
If x = y Then
Return 0
End If
End Function
End Class
然后在调用ArrayList的Sort()方法时把该类的一个实例作为参数传递给Sort()方法。
Console.WriteLine("")
syncal.Sort(New DESC)
For Each obj As Object In syncal
Console.WriteLine(obj.ToString)
Next
这样就按照倒序排列了。
完整的代码如下:
Module Module1
Sub Main()
Dim al As New System.Collections.ArrayList
Dim syncal As System.Collections.ArrayList
syncal = System.Collections.ArrayList.Synchronized(al)
syncal.Add("hijklmnop")
syncal.Add("abc")
syncal.Add("def")
syncal.Sort()
For Each obj As Object In syncal
Console.WriteLine(obj.ToString)
Next
Console.WriteLine("")
syncal.Sort(New DESC)
For Each obj As Object In syncal
Console.WriteLine(obj.ToString)
Next
Console.ReadLine()
End Sub
Public Class DESC
Implements System.Collections.IComparer
Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements System.Collections.IComparer.Compare
If x > y Then
Return -1
End If
If x < y Then
Return 1
End If
If x = y Then
Return 0
End If
End Function
End Class
End Module
要对ArrayList进行排序还不容易吗?用Sort()方法。非常容易解决的。但是事情真的那么简单吗?
如果情况是这样的:
Dim al As New System.Collections.ArrayList
Dim syncal As System.Collections.ArrayList
syncal = System.Collections.ArrayList.Synchronized(al)
syncal.Add("abc")
syncal.Add("def")
syncal.Add("hijklmnop")
要进行排序,就这样调用Sort()方法:
syncal.Sort()
这样作当然是正确的,但是如果需要的是倒序又该怎么办?答案是实现System.Collections.IComparer接口。如下所示:
Public Class DESC
Implements System.Collections.IComparer
Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements System.Collections.IComparer.Compare
If x > y Then
Return -1
End If
If x < y Then
Return 1
End If
If x = y Then
Return 0
End If
End Function
End Class
然后在调用ArrayList的Sort()方法时把该类的一个实例作为参数传递给Sort()方法。
Console.WriteLine("")
syncal.Sort(New DESC)
For Each obj As Object In syncal
Console.WriteLine(obj.ToString)
Next
这样就按照倒序排列了。
完整的代码如下:
Module Module1
Sub Main()
Dim al As New System.Collections.ArrayList
Dim syncal As System.Collections.ArrayList
syncal = System.Collections.ArrayList.Synchronized(al)
syncal.Add("hijklmnop")
syncal.Add("abc")
syncal.Add("def")
syncal.Sort()
For Each obj As Object In syncal
Console.WriteLine(obj.ToString)
Next
Console.WriteLine("")
syncal.Sort(New DESC)
For Each obj As Object In syncal
Console.WriteLine(obj.ToString)
Next
Console.ReadLine()
End Sub
Public Class DESC
Implements System.Collections.IComparer
Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements System.Collections.IComparer.Compare
If x > y Then
Return -1
End If
If x < y Then
Return 1
End If
If x = y Then
Return 0
End If
End Function
End Class
End Module
相关文章推荐
- Java1.7通过collections类的sort方法对ArrayList进行排序无效的解决办法。
- 对数字段进行排序,String,Integer,Arrays,ArrayList,Scanner
- 对ArrayList中的元素按照某一列进行排序
- 对ArrayList实例对象中的元素进行排序
- 使用指定的比较器对整个 System.Collections.ArrayList 中的元素进行排序。
- 用Collection.sort对 ArrayList容器中对象的id 进行排序
- 用ArrayList对数组进行排序
- java中对ArrayList进行排序
- ArrayList按照元素的特性进行排序
- Java 基础小知识二:使用Comparator 对ArrayList 进行排序
- java中对ArrayList进行排序
- 对ArrayList进行按某种要求进行排序
- 利用ArrayList对Hashtable其进行排序
- Java中对ArrayList进行排序
- java中使用sort()对ArrayList进行排序
- 对ArrayList中某一元素进行排序
- 如何使用arraylist对存放class中某个元素进行排序
- Java对ArrayList进行排序
- 对ArrayList集合中的元素进行排序
- Java中,通过使用Collections.sort对ArrayList进行排序