Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
ArrayList nach bestimmten Zahlen in einem String sortieren
indeopax
myCSharp.de - Member



Dabei seit:
Beiträge: 5

Themenstarter:

ArrayList nach bestimmten Zahlen in einem String sortieren

beantworten | zitieren | melden

Moderationshinweis von herbivore (01.07.2013 - 07:07:13):

vorneweg: ArrayList gehört in die Mottenkiste und sollte wie alle untypisierten Collections aus System.Collections nicht mehr benutzt werden. Verwende stattdessen List<T> und alle anderen typisierten Collections aus System.Collections.Generic.


Hallo,

ich habe ein kleines Problem. Meine ArrayList beinhaltet mehrere Strings die mit einem Komma getrennt sind


ArLis.Add("12,13");
ArLis.Add("43,12");
ArLis.Add("21,13");
usw.

Nun wollte ich das Ganze aber mit ArLis.Sort() sortieren. Das brachte aber einen Fehler.

Eigentlich möchte ich auch nur aufsteigend nach den ersten beiden Zahlen vor den Komma sortieren.

Habt ihr einen Tipp wie ich das anstelle.

Grüße
private Nachricht | Beiträge des Benutzers
Coffeebean
myCSharp.de - Team

Avatar #avatar-3295.gif


Dabei seit:
Beiträge: 2459
Herkunft: Deutschland/Schweiz

beantworten | zitieren | melden

HGallo indeopax,

Arraylisten sind veraltet. Du solltest eine Liste nehmen (System.Collections.Generic-Namespace).

Dann geht auch das Sort.

Ich sehe in


List<string> arlist  = new List<string>();
            arlist.Add("12,13");
            arlist.Add("43,12");
            arlist.Add("21,13");
            arlist.Sort();

keinen Syntaxfehler. Nichts desto trotz solltest du dir mal den IComparer anschauen.

Sort-MSDN

Sind aber alles Grundlagen.

Gruss

Coffeebean
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Coffeebean am .
private Nachricht | Beiträge des Benutzers
CSharperUser
myCSharp.de - Member



Dabei seit:
Beiträge: 81

beantworten | zitieren | melden

Hallo indeopax,

erstens ist eine ArrayList schlecht. Verwende hier eine generische Collection, bsp. List<T>. Da du immer Tuple einfügst würde ich für T die Klasse Tuple<string,string> wählen.

Sortieren kannst du es dann so (ungetestet):


List<Tuple<string,string>> liste = new List<Tuple<string,string>>();
liste.Add(new Tuple<string,string>("12","13"));
iste.Add(new Tuple<string,string>("43","12"));
iste.Add(new Tuple<string,string>("21","13"));

//sortieren mit Lamda-Ausdruck
//first und second sind die Tuple, die aktuell verglichen werden
liste.Sort((first,second)=>first.Item1.CompareTo(second.Item1));
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

Hallo indeopax,

wenn du schon eine Fehlermeldung bekommst, dann solltest du sie unbedingt immer (exakt) angeben, siehe [Hinweis] Wie poste ich richtig? Punkt 5.

Bitte beachte bei weiteren Fragen auch Punkt 1.1.1.

Dass ArrayList Mist ist und nicht mehr verwendet werden sollte, wurde schon gesagt.


Das voneweg noch kurz zu der Frage:

Wenn du nur nach einem Teil des Strings sortiert werden soll und dieser Teil auch noch als Zahl interpretiert werden soll, dann kannst du dir einen passenden IComparer<T> o.ä. schreiben und beim Aufruf der Sort-Methode angeben. In dem Comparer liest du den entsprechenden Teil aus den Strings (z.B. mit Regex), wandelst in eine Zahl um (z.B. mit int.Parse) und vergleichst die Resultate.

Es ist aber zu überlegen, ob du nicht - wie CSharperUser es andeutet - eine passendere Datenstruktur verwendest, wobei wenn du nach Zahlen sortieren willst, als Typparameter wohl eher int als String in Frage käme.

herbivore
private Nachricht | Beiträge des Benutzers