我正在学习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值插入原始数组以防止重叠问题。
但是,有没有办法改进这种方法?
我不相信更好的排序算法可以帮助简化这种方法。
您能否提供任何提示来简化此方法?
感谢
答案 0 :(得分:0)
Array.Sort
方法有一个重载,它将根据另一个数组对数组进行排序:
Dim keys = myHastable.Keys.Cast(Of Integer)().ToArray()
Dim values = myHastable.Values.Cast(Of Integer)().ToArray()
Array.Sort(values, keys)