21. november 2004 - 16:42Der er
13 kommentarer og 1 løsning
Sorter ArrayList efter navn
Hej Eksperter.
Jeg har en ArrayList med objekter (kontaktpersoner). Jeg ønsker at arrayet sorteres efter navne på disse kontaktpersoner. Hvordan gøres det med ArrayList.Sort() ?
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
public class Foobar : IComparable { private int a; private string b; public Foobar() : this(0, "") { } public Foobar(int a, string b) { this.a = a; this.b = b; } public int A { get { return a; } set { a = value; } } public string B { get { return b; } set { b = value; } } public int CompareTo(object o) { return (a - ((Foobar)o).A); } public override string ToString() { return ("(" + a + "," + b + ")"); } }
public class FoobarAComparer : IComparer { int IComparer.Compare(Object o1, Object o2) { return (((Foobar)o1).A - ((Foobar)o2).A); } }
public class FoobarRevAComparer : IComparer { int IComparer.Compare(Object o1, Object o2) { return -(((Foobar)o1).A - ((Foobar)o2).A); } }
public class FoobarBComparer : IComparer { int IComparer.Compare(Object o1, Object o2) { return (((Foobar)o1).B.CompareTo(((Foobar)o2).B)); } }
public class FoobarRevBComparer : IComparer { int IComparer.Compare(Object o1, Object o2) { return -(((Foobar)o1).B.CompareTo(((Foobar)o2).B)); } }
class ManySort { private static void print(string descr, ArrayList list) { Console.Write(descr + ": ["); foreach(object o in list) { Console.Write(o); } Console.WriteLine("]"); } public static void Main(string[] args) { ArrayList list = new ArrayList(); list.Add(new Foobar(5, "AAAAA")); list.Add(new Foobar(4, "BBBB")); list.Add(new Foobar(3, "CCC")); list.Add(new Foobar(2, "DD")); list.Add(new Foobar(1, "E")); print("Original", list); list.Sort(); print("After natural sort (= sort on A)", list); list.Sort(new FoobarRevAComparer()); print("After reverse sort on A", list); list.Sort(new FoobarAComparer()); print("After sort on A", list); list.Sort(new FoobarBComparer()); print("After sort on B", list); list.Sort(new FoobarRevBComparer()); print("After reverse sort on B",list); } }
Dvs. at jeg skal erstatte ... med den nuværende kode på min klasse ?
Hvad gør jeg efterfølgende ?
Jeg troede faktisk, at man bare kunne skrive arrayList.Sort(), hvis man havde en ToString på sin klasse, der returnerede det man ønskede der skulle sorteres i (fx navn).
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.