2017-01-02 3 views
-7

Als ich verwendenWie sortiere ich eine Arraylist? Wenn es numerisch oder alphabetisch ist?

arraylist.sort()

Methode seiner Anzeige Sortierung von alphabetischer Zeichenkette um, aber nicht Zahlenwert in der Folge anzuzeigen.

Für Beispiel

Ich habe eine Arraylist wie

1 
22 
21 
34 
27 
68 
100 

und ich bin das Sortieren dieser Liste Array mit vb.net dann seine Anzeige den Ausgang

1 
100 
22 
21 
27 
34 
68 

Das war getan Sortiermittel aber sie sortieren die Array-Liste Basis auf das erste Zeichen der Zeichenfolge, aber ich brauche in Folge wie

1 
21 
22 
27 
34 
68 
100 

und auch wenn ich alphabetisch hinzufügen, dann hat es auch funktioniert.

+3

geben Sie bitte Ihren Code an –

+1

Ich stimme für das Schließen dieser Frage als Off-Topic, weil OP Code nicht zur Verfügung gestellt hat, daher wahrscheinlich der Grund für viele Downvotes. Ohne Code können wir keine angemessene Lösung anbieten, wenn wir sie nicht haben. Die Antworten, die zur Verfügung gestellt wurden, sind Annahmen und generische, da sie Ihren Code nicht in Frage haben. – Codexer

Antwort

0

Ihre ArrayList enthält möglicherweise Zeichenfolgen statt Zahlen. ändere es in Zahlen und es wird nach Integer-Typ sortiert.

+0

ok kannst du mir bitte sagen wie das geht? –

+0

Siehe Antworten oben –

1
Dim list As New ArrayList '- items as string 
list.Add("1") 
list.Add("100") 
list.Add("2") 

und

Dim list As New ArrayList '- items as numerical values 
list.Add(1) 
list.Add(100) 
list.Add(2) 

sind different.So Sie Artikel zu Ihrer Arraylist entsprechend

2

Wenn Sie nicht Integer für die Nummer-Strings verwenden können (dann wäre es zu sortieren, wie erwartet sollten hinzufügen) Sie könnten die Zeichenfolgen mit Int32.Parse konvertieren und die Sort-overload verwenden, die eine IComparer:

arraylist.Sort(Comparer(Of String).Create(Function(s1,s2) Int32.Parse(s1).CompareTo(Int32.Parse(s2)))) 
dauert

Natürlich funktioniert das nur, wenn alle Elemente wirklich Zeichenfolgen sind, die in Integer konvertiert werden können, was die Frage aufwirft, warum Sie überhaupt kein List(Of String)/List(Of Int32) verwendet haben.

Verwandte Themen