Array的sort函数使用总结

用好Array的话对性能提高 或有很大帮助

 

声明Array的两种方式

      

        'Dim arr1 As Array = Array.CreateInstance(GetType(String), 长度)

       

        给定明确的类型:假设为string的数组
        Dim arr1(长度 - 1) As String

 

利用Array.Sort()给指定的数组或数据key,数据value排序

下文是对Hashtable的key进行排序:(包括按字符升序或降序,字符升序的升序或降序)

        Dim htPara As Hashtable = New Hashtable
        Dim strLog As StringBuilder
        Dim str As New StringBuilder
        Dim arr As New ArrayList

       初始化Hashtable的内容

        htPara.Add("SHIP_ORDER_DATE", "2011/02/16")
        htPara.Add("SHIP_ORDER_DATE_TOMORROW", "2011/02/17")
        htPara.Add("a", "2011/02/18")
        htPara.Add("aa", "2011/02/18")
        htPara.Add("z", "2011/02/19")

        初始化Hashtable的内容(数值型)
        'htPara.Add(1, "2011/02/16")
        'htPara.Add(2, "2011/02/17")
        'htPara.Add(300, "2011/02/17")
        Dim enumerator As IDictionaryEnumerator
        enumerator = htPara.GetEnumerator
        Dim arr1(htPara.Count - 1) As String
        Dim arr2(htPara.Count - 1) As String

 

       把Hashtable的内容复制到Array中
        htPara.Keys().CopyTo(arr1, 0)
        htPara.Values.CopyTo(arr2, 0)

 

        如果内容是数值就可以行Sum()
        Debug.WriteLine(arr1.Max())
        Debug.WriteLine(arr1.Min())
        'Debug.WriteLine(arr1.Sum())

        把Array中的内容复制到 List中
        'Dim list As List(Of Integer) = arr1.ToList

 

       利用排序类进行排序(文字長さでソート(降順))

       只是按文字的升序的话,可以不用第2个参数。保持默认即可

        Array.Sort(arr1, New SortBySizeDesc)

 

       按文字的升序排序,对像是index的1到3

        Array.Sort(arr1, 1,3)

 

       按文字的升序排序,对像是数组key,数组value排序

        Array.Sort(arr1, arr2)

      

       如果是Arraylist对像的话,还可以这样用。

      假设Arraylist对像 是myArrlst

      利用排序类进行排序(文字長さでソート(降順))

     myArrlst.Sort(New SortBySizeDesc)

 

以下是排序类:只是按文字的升序的话,可以不用这个参数。保持默认即可

-----------------------------------------------

   ''' <summary>
    ''' 文字長さでソート(昇順)
    ''' </summary>
    ''' <remarks>ソート用</remarks>
    Public Class SortBySizeAsc
        Implements IComparer

        Function Compare(ByVal x As Object, ByVal y As Object) As Integer _
           Implements IComparer.Compare
            Return New CaseInsensitiveComparer().Compare(x.ToString.Length, y.ToString.Length)
        End Function

    End Class

    ''' <summary>
    ''' 文字長さでソート(降順)
    ''' </summary>
    ''' <remarks>ソート用</remarks>
    Public Class SortBySizeDesc
        Implements IComparer

        Function Compare(ByVal x As Object, ByVal y As Object) As Integer _
           Implements IComparer.Compare
            Return New CaseInsensitiveComparer().Compare(y.ToString.Length, x.ToString.Length)
        End Function

    End Class

    ''' <summary>
    ''' 文字でソート(昇順)
    ''' </summary>
    ''' <remarks>ソート用</remarks>
    Public Class SortByCharAsc
        Implements IComparer
        Function Compare(ByVal x As Object, ByVal y As Object) As Integer _
           Implements IComparer.Compare
            Return New CaseInsensitiveComparer().Compare(x, y)
        End Function
    End Class

    ''' <summary>
    ''' 文字でソート(降順)
    ''' </summary>
    ''' <remarks>ソート用</remarks>
    Public Class SortByCharDesc
        Implements IComparer
        Function Compare(ByVal x As Object, ByVal y As Object) As Integer _
           Implements IComparer.Compare
            Return New CaseInsensitiveComparer().Compare(y, x)
        End Function
    End Class

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值