如何排序ArrayList(int)

时间:2011-07-14 14:56:55

标签: c# .net asp.net sorting arraylist

如何按升序和降序对Arraylist进行排序。 实施例。

ArrayList list= new ArrayList();
list.Add(2);
list.Add(8);
list.Add(0);
list.Add(1);

如何按升序和降序对上面的列表进行排序?

7 个答案:

答案 0 :(得分:2)

您可以使用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<T>,这是类型安全的,而且更加通用。

答案 1 :(得分:1)

ArrayList包含Sort方法。 (已编辑删除不正确的.NET信息)

答案 2 :(得分:1)

您可以使用list.Sort()函数。 请参阅此处示例http://msdn.microsoft.com/ru-ru/library/0e743hdt.aspx

答案 3 :(得分:1)

您可以使用ArrayList.Sort Method

答案 4 :(得分:0)

在这里使用数组列表而不是List<int>是危险的,但是,这是您正在寻找的内容:

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);
    }
}

答案 5 :(得分:0)

list.Sort()将对它们进行排序,但我建议使用List&lt;&gt;和集合进行排序。避免使用ArrayList imo。

答案 6 :(得分:-1)

使用升序列表,您可以使用list.Sort()

对于下降列表,有一种简单的方法可以做到这一点!

你可以这样做降序列表:

list.Sort();
list.Reverse();