2016-06-02 5 views
0

ich VB.NET studiert, und ich will eine bessere Idee wissen, um Schlüssel von sortierten Werten in Hashtable zu erhaltenVB.NET Get Keys von sortierten Werten in Hashtable

Hier ist meine Lösung, die ich

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 
gebaut

ich habe eine Ausgabe wie ..

'' OUTPUT ''

  • (0) 3 {I nteger} 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

ich gehe davon aus, dass ich Hashtable haben.

I erstellen zwei Arrays und speichern beide Schlüssel (int_Key) und Werte (int_value) Von Hashtable

kopieren I-Wert (int_value) Array Dum_Int Werte zu sortieren

Wenn I Matching int value gefunden zwischen Sortiertes Array und ursprünglicher Wert Array

Ich speicherte in STORE_KEYS (Arraylist) und ich füge Max Int-Wert in das ursprüngliche Array ein, um überlappende Probleme zu vermeiden.

Gibt es jedoch eine Möglichkeit, diese Methode zu verbessern?

Ich glaube nicht, dass besser sortieren Algor kann nicht helfen, diese Methode zu vereinfachen.

Können Sie Hinweise geben, um diese Methode zu vereinfachen?

dank

+1

Wenn Sie eine frühere Version von VB als 2005 verwenden, sollten Sie keine 'verwenden Hashtable' oder eine 'ArrayList'. Sie sollten stattdessen ein 'Dictionary' und' List' verwenden. – jmcilhinney

+0

Ich kann nicht verstehen, was Sie versuchen zu erreichen. – shadow

Antwort

0

Die Array.Sort Methode hat eine Überlastung, die ein Array auf einem anderen Array basierend sortieren wird:

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

Array.Sort(values, keys)