Welcome to MSDN Blogs Sign in | Join | Help

Sort the objects in ArrayList

It should be a frequent scenario to sort the order of objects in a collection, such as ArrayList. ArrayList in c# provide a method named Sort(). But we need to let ArrayList know the detailed sorting algorithm.

There are two means to implement this:

1. Make the target class inheritted from IComparable interface, and provide CompareTo() method. IComparable interface comes from System namespace.

For example:

    class UITestCase: IComparable
    {
        private int _sequenceno = 0;
        public int SequenceNo
        {
            get
            {
                return _sequenceno;
            }
            set
            {
                _sequenceno = value;
            }
        }
......

        // implement the IComparable interface, define the algorithm here
        public Int32 CompareTo(object next)
        {
            UITestCase nextCase = (UITestCase)next;

            return (this.SequenceNo.CompareTo(nextCase.SequenceNo));
        }
    } // class end.

When using ArrayList to store a group of UITestCase objects, we could simply call ArrayList.Sort() to sort all objects in it.

                // get all test case entities, then make sort order
                ArrayList caseList = new ArrayList();
                foreach (DirectoryInfo dir in nodeDirInfo.GetDirectories("*.tc"))
                {
                    UITestCase testcase = new UITestCase(dir.FullName);

                    caseList.Add(testcase);
                }

                if (caseList.Count > 0)
                {
                    caseList.Sort();
                }

2. Create a class inherited from IComparer interface, then implement Compare(object x, object y) method just like IComparable's CompareTo(object next) method.

3. Write a special method to sort the order of a given ArrayList like what we will do in C language, I prefer this one because I think the codes writing in above two methods are not straightforward enough.

Published Wednesday, February 22, 2006 2:51 AM by Elton
Filed under:

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

No Comments

Leave a Comment

(required) 
required 
(required) 

  
Enter Code Here: Required
 
Page view tracker