您的位置:首页 > 其它

任意对象数组ArrayList的排序法(可自定义排序字段、排序方向)

2004-12-30 16:57 302 查看
ArrayList可以用来组合任何的对象,但其默认的排序是按对象本身值来排序,而不是应用自定义的,因此需要重新修改ArrayList的Sort方法的IComparer接口实现。以下是重新写的IComparer的实现,用了类型反射以做到能适合所有类的排序

性能测试:(仅供参考)

配置:PIII 733  384M内存

         Windows2000SP4   .net FrameWork 1.1.4322 SP1

ArrayList容纳100个对象,排序时间大约10~20毫秒

ArrayList容纳1000个对象,排序时间大约100毫秒左右

ArrayList容纳10000个对象,排序时间大约1200~1600毫秒

代码:

ReverserClass

实现IComparer接口的自定义类,其中定义了ArrayList包含的对象的类型type和需要排序的类型的字段name

        static void Main(string[] args)

                    UserClass user;

            ArrayList ar = new ArrayList();

            user = new UserClass("1", 1, "1");

            ar.Add(user);

            user = new UserClass("9", 9, "9");

            ar.Add(user);

            user = new UserClass("4", 4, "4");

            ar.Add(user);

            user = new UserClass("3", 3, "3");

            ar.Add(user);

            user = new UserClass("6", 6, "6");

            ar.Add(user);

            

            Console.WriteLine(            ReverserClass reverser = new ReverserClass(user.GetType(), "Name", "DESC");

            ar.Sort(reverser);

            Console.WriteLine(

        }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: