Mam słownika w formie:Sortowanie słownika Wartość
{ "honda" : 4, "toyota": 7, "ford" : 3, "chevy": 10 }
chcę sortować je według drugiej kolumnie aka (wartość) malejące.
sygnał wyjściowy:
"pogoń" 10
"Toyota", 7
"Honda", 4
"Ford" 3
Mam słownika w formie:Sortowanie słownika Wartość
{ "honda" : 4, "toyota": 7, "ford" : 3, "chevy": 10 }
chcę sortować je według drugiej kolumnie aka (wartość) malejące.
sygnał wyjściowy:
"pogoń" 10
"Toyota", 7
"Honda", 4
"Ford" 3
W rzeczywistości, jeśli jest to HashTable, nie można go sortować. Z drugiej strony, jeśli masz ArrayList lub innych kolekcji, które mogą być sortowane, można zaimplementować własną IComparer.
public class MyDicComparer : IComparer
{
public int Compare(Object x, Object y)
{
int Num1= ((Dictionary)x).Value; // or whatever
int Num2= ((Dictionary)y).Value;
if (Num1 < Num2) return 1;
if (Nun1 > Num2) return -1;
return 0; // Equals, must be consideres
}
ArrayList AL;
...
AL.Sort(MyDicComparer);
HTH
Dzięki caryden od: How do you sort a dictionary by value?
Dim sortedDict = (From entry In dict Order By entry.Value Descending Select entry)
problemów zgłoszonych powyżej były spowodowane niewłaściwym pętli.
Get błąd na "realizuje IComparer": Klasa publiczna MyDictComparer Wbudowy IComparer Public Function Porównaj (ByVal x W [Obiekt], ByVal y Jako [Object]) As Integer Dim num1 As DictionaryEntry = DirectCast (x, DictionaryEntry) Dim num2 jako DictionaryEntry = DirectCast (Y, DictionaryEntry) Jeśli CInt (Num1.Value) CInt (Num2.Value) Następnie Powrót -1 End If Return 0 End Function End Class –
s15199d
komunikat o błędzie: Klasy CountValueComparer 'musi wdrożyć 'Funkcja Porównaj (x, y As Object As Object) As Integer' dla interfejsu 'System.Collections.IComparer'. – s15199d