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 程序内省去了类型转换过程,效率高

posted @ 2015-06-15 00:18  xiaoshi657  阅读(7845)  评论(0编辑  收藏  举报