VB.NET通过Hashtable

时间:2016-06-02 05:44:28

标签: arrays vb.net sorting hashtable

我正在学习VB.NET,我想知道更好的想法通过Hashtable中的排序值来获取Keys

这是我建立的解决方案

  Dim int_Value As Integer() = New Integer() {-9, 2, 8, 6, 8, 1, -9}
        Dim int_Key As Integer() = New Integer() {1, 2, 3, 4, 5, 6, 7}
        Dim Dum_Int(int_Key.Length) As Integer

        Dim STORE_KEYS As New ArrayList
        Array.Copy(int_Value, Dum_Int, Dum_Int.Length - 1)
        Array.Sort(Dum_Int)
        Array.Reverse(Dum_Int)

        For I = 0 To Dum_Int.Length - 1
            For II = 0 To int_Value.Length - 1
                If Dum_Int(I) = int_Value(II) Then
                    STORE_KEYS.Add(int_Key(II))
                    int_Value(II) = Integer.MaxValue
                End If
            Next
        Next

我的输出像......

  

'' OUTPUT''

     
      
  • (0)3 {Integer} Object
  •   
  • (1)5 {Integer} Object
  •   
  • (2)4 {Integer} Object
  •   
  • (3)2 {Integer} Object
  •   
  • (4)6 {Integer} Object
  •   
  • (5)1 {Integer} Object
  •   
  • (6)7 {Integer} Object
  •   

我认为我有Hashtable。

我创建两个数组并存储Keys(int_Key)和Values(Int_Value)来自Hashtable

然后我将Value(Int_Value)数组复制到Dum_Int以对值进行排序

每当我在Sorted Array和Original Value Array之间找到匹配的int值

我存储到STORE_KEYS(arraylist)并将Max Int值插入原始数组以防止重叠问题。

但是,有没有办法改进这种方法?

我不相信更好的排序算法可以帮助简化这种方法。

您能否提供任何提示来简化此方法?

感谢

1 个答案:

答案 0 :(得分:0)

Array.Sort方法有一个重载,它将根据另一个数组对数组进行排序:

Dim keys = myHastable.Keys.Cast(Of Integer)().ToArray()
Dim values = myHastable.Values.Cast(Of Integer)().ToArray()

Array.Sort(values, keys)