23. marts 2006 - 16:08
Der er
7 kommentarer og 3 løsninger
Sortere en arraylist
jeg har en klasse public class user { name; birthday ... } Objekter af user klassen bliver gemt i en arraylist. Men jeg vil godt have det sådan at man kan sortere data i arraylisten. Så dem har fødseldags først også ligger i topppen af listen eller omvendt.
Annonceindlæg fra Trustworks
Tillid i en Zero-Trust verden
Med voksende trusler, nye EU-krav og øget kompleksitet er cybersikkerhed nu en central ledelsesopgave på linje med strategi og økonomi.
23. marts 2006 - 17:28
#2
Et simpelt eksempel : using System; class Employee:IComparable { private int Id; private string Name; public Employee(int id,string name) { this.Id=id; this.Name=name; } public int CompareTo(object obj) { Employee temp=(Employee)obj; if(this.Id>temp.Id) { return 1; } else { if(temp.Id==this.Id) return 0; else return -1; } } public static void Main() { Employee[] employees=new Employee[5]; Console.WriteLine("Before Sort:"); for(int i=0;i<employees.Length;i++) { employees[i]=new Employee(5-i,"Employee#" + i); Console.Write(employees[i].Id + ","); } Console.WriteLine(); Array.Sort(employees); Console.WriteLine("After Sort:"); for(int i=0;i<employees.Length;i++) { Console.Write(employees[i].Id + ","); } Console.WriteLine(); } }
23. marts 2006 - 18:25
#3
blot en lille kommentar til eksemplet... alle valuetyper implementerer IComparable, så der er ingen grund til at lave sammenligningen selv: public int CompareTo(object obj) { Employee e = obj as Employee; // fejl hvis e er null return this.Id.CompareTo(e.Id); } mvh
24. marts 2006 - 09:42
#4
hej snepnet det er en nyttig information som du kom med. Er det så muligt at sortere filer påbaggrund af deres oprettelsesdato : DirectoryInfo directory = new DirectoryInfo(Folder); FileInfo[] fileinfo = directory.GetFiles("user"); Array.Sort(fileinfo);
24. marts 2006 - 09:53
#5
du kan lave din egen comparer: public class FileDateComparer : IComparer { public int Compare(object x, object y) { FileInfo f1 = x as FileInfo; FileInfo f2 = y as FileInfo; Debug.Asser(f1 != null); Debug.Asser(f2 != null); return f1.CreationTime.CompareTo(f2.CreationTime); } } og så kan du sortere sådan her: DirectoryInfo directory = new DirectoryInfo(Folder); FileInfo[] fileinfo = directory.GetFiles("user"); Array.Sort(fileinfo, new FileDateComparer()); mvh