如何排序数组列表(int)

本文关键字:数组 列表 int 排序 何排序 | 更新日期: 2023-09-27 18:02:40

如何按升序和降序对Arraylist进行排序?例子。

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

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

如何排序数组列表(int)

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

可以使用list.Sort()函数。示例如下http://msdn.microsoft.com/ru-ru/library/0e743hdt.aspx

你可以使用ArrayList。排序方法

ArrayList包含一个Sort方法。(编辑删除不正确的。net信息)

在这里使用数组列表而不是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);
    }
}

list.Sort()将对它们进行排序,但我建议使用List<>和Collections进行排序。

对于升序列表,您可以使用list. sort ()

对于降序列表,有一个简单的方法!

你可以这样做降序列表:

list.Sort();
list.Reverse();
    private void DisplayMain()
    {
        string sValue = "1,2,5,8,6,7,110,220";
        txtValue.Text = sValue;
        string[] asDS = sValue.Split(',');
        ArrayList alData = new ArrayList();
        foreach (string sDS in asDS)
        {
            alData.Add(sDS);
        }//end of foreach
        alData.Sort(new IntSort());
        //============
        int iCnt = 0;
        StringBuilder sbResult = new StringBuilder();
        foreach (string sData in alData)
        {
            iCnt++;
            sbResult.AppendLine(iCnt.ToString() + " ====> " + sData);
        }//end of if 
        string sResult = sbResult.ToString();
        txtResult.Text = sResult;
    }//end of DisplayMain
    public class IntSort : IComparer
    {
        public int Compare(object x, object y)
        {
            string sX = x.ToString();
            string sY = y.ToString();
            int iResult = 0;
            int iX = int.Parse(sX);
            int iY = int.Parse(sY);
            if(iX > iY) { iResult = 1; }//end of if
            else if (iY > iX) { iResult = -1; }//end of if 
            return iResult;
            //return ((int)y).CompareTo((int)x);
        }
    }