日期:2014-05-20  浏览次数:21203 次

ArrayList 排序问题。。。。。。。。。。。。。。。。。。。。。。。
ArrayList   a   =   new   ArrayList();
a.Add(3);
a.Add(2);
a.Add(4);
a.Add(5);
a.Add(1);

for(int   j=0;   j <i.Count;   j++)
{
    a.Sort();
    this.TextBox1.Text   +=   a[j].ToString()   +   ", ";
}

这样输出来的结果是:1,2,3,4,5,
我将   a.Sort()   改为   a.Reverse()   它怎么不是降序排列的

我想要的结果是:5,4,3,2,1,     应该怎么做。

------解决方案--------------------
public class myReverserClass : IComparer {

// Calls CaseInsensitiveComparer.Compare with the parameters reversed.
int IComparer.Compare( Object x, Object y ) {
return( (new CaseInsensitiveComparer()).Compare( y, x ) );
}

}
IComparer myComparer = new myReverserClass();
Array.Sort( a, myComparer );


*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码)

最新版本:20070212

http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
------解决方案--------------------
楼上正解,用自定义的比较器
------解决方案--------------------
ArrayList a = new ArrayList();
a.Add(3);
a.Add(2);
a.Add(4);
a.Add(5);
a.Add(1);
a.Sort();
a.Reverse();
for(int j=0; j <a.Count; j++)
{

this.textBox1.Text += a[j].ToString() + ", ";
}
------解决方案--------------------
a.Reverse(); // <= 把代码提到这里来
for(int j=0; j <i.Count; j++)
{

this.TextBox1.Text += a[j].ToString() + ", ";
}