ArrayList 排序Sort()方法扩展
1、Sort()
Sort()可以直接对默认继承 IComparable接口的类进行排序,如:int、string....
ArrayList arrayList = new ArrayList(); int[] arr = new int[] { 1, 9, 3, 6, 5, 4, 7, 8,2}; arrayList.AddRange(arr); arrayList.Sort(); //结果输出结果:123456789
2、Sort()对自定义类型进行排序
对自定义类型进行排序,该类必须实现IComparable或者使用“比较器”。
实现接口
class Person : IComparable { public string Name { get; set; } public int Age { get; set; } public int CompareTo(object obj) { Person p = obj as Person; if (p == null) { throw new ArgumentException(); } else { return this.Age-p.Age; } } } //这样就可以 p.Sort()排序了,与int、string一样了
比较器 比较器需实现IComparer接口
class PersonSortByAgeAsc : IComparer { #region IComparer 成员 public int Compare(object x, object y) { Person p1 = x as Person; Person p2 = y as Person; if (p1 != null && p2 != null) { return p1.Age - p2.Age; } else { throw new ArgumentException(); } } #endregion } //使用比较器 arr.Sort(new PersonSortByAgeAsc());
注:使用时,如非必要强烈建议使用list而不是arraylist 程序内省去了类型转换过程,效率高