如何排序ArrayList(int)
如何按升序和降序对Arraylist
进行排序。 例。
ArrayList list= new ArrayList(); list.Add(2); list.Add(8); list.Add(0); list.Add(1);
如何按升序和降序对上面的列表进行排序?
您可以使用list.Sort()
升序。 对于降序,您需要通过实现IComparer
来颠倒顺序。 这样的事情会做:
// calling normal sort: ArrayList ascendingList = list.Sort(); // calling reverse sort: ArrayList descendingList = list.Sort(new ReverseSort()); // implementation: public class ReverseSort : IComparer { public int Compare(object x, object y) { // reverse the arguments return Comparer.Default.Compare(y, x); } }
请注意,就像Jon Skeet在主要问题下的注释线程中提到的那样,您根本不需要使用无类型的ArrayList。 相反,您可以使用通用List
,它是类型安全的,而且更加通用。
您可以使用list.Sort()函数。 请参阅此处的示例http://msdn.microsoft.com/ru-ru/library/0e743hdt.aspx
您可以使用ArrayList.Sort方法
ArrayList包含Sort方法。 (已编辑删除不正确的.NET信息)
使用数组列表而不是List
这是危险的,但是,这是您正在寻找的:
System.Collections.ArrayList al = new System.Collections.ArrayList(); al.Add(5); al.Add(3); al.Add(1); al.Add(4); al.Add(0); al.Sort(); foreach (var x in al) { Console.WriteLine(x.ToString()); } al.Sort(new DescendingIntSorter()); foreach (var x in al) { Console.WriteLine(x.ToString()); } public class DescendingIntSorter : System.Collections.IComparer { public int Compare(object x, object y) { return ((int)y).CompareTo((int)x); } }
list.Sort()会对它们进行排序,但我建议使用List <>和Collections进行排序。 避免使用ArrayList imo。
使用升序列表,您可以使用list.Sort()
而对于下降列表,有一个简单的方法来做到这一点!
您可以像这样执行降序列表:
list.Sort(); list.Reverse();