ArrayList.Sort方法用于对ArrayList中的元素进行排序。此方法的重载列表中共有3种方法,如下所示:
- 种类()
- 排序(IComparer)
- 排序(Int32,Int32,IComparer)
种类()
此方法用于对整个ArrayList中的元素进行排序。它使用QuickSort算法对ArrayList的元素进行排序。
注意:此方法是O(n log n)运算,其中n是Count,在最坏的情况下,它是O(n ^ 2)运算。
句法:
public virtual void Sort ();
异常:如果ArrayList为只读,则此方法将提供NotSupportedException。
例子:
// C# program to illustrate Sort() Method
using System;
using System.Collections;
class GFG {
// Main method
public static void Main()
{
// create and initalize new ArrayList
ArrayList mylist = new ArrayList();
mylist.Add("Welcome");
mylist.Add("to");
mylist.Add("Geeks");
mylist.Add("for");
mylist.Add("Geeks");
mylist.Add("2");
// ArrayList before sorting
Console.WriteLine("ArrayList before sort:");
foreach(string i in mylist)
{
Console.WriteLine(i);
}
Console.WriteLine();
Console.WriteLine("ArrayList after sort:");
// sort the ArrayList
// using Sort() method
mylist.Sort();
// ArrayList after sort
foreach(string i in mylist)
{
Console.WriteLine(i);
}
}
}
输出:
ArrayList before sort:
Welcome
to
Geeks
for
Geeks
2
ArrayList after sort:
2
for
Geeks
Geeks
to
Welcome
排序(IComparer)
此方法用于使用指定的比较器对整个ArrayList中的元素进行排序。此方法是O(n log n)操作,其中n是Count;在最坏的情况下,它是O(n ^ 2)运算。
句法:
public virtual void Sort (IComparer comparer);
在这里,比较元素时使用IComparer实现。
例外情况:
- NotSupportedException:如果ArrayList为只读。
- InvalidOperationException:由于在比较两个元素时发生错误。
- ArgumentException:如果为比较器传递了null,并且列表中的元素未实现IComparable。
例子:
// C# program to illustarte Sort(IComparer) Method
using System;
using System.Collections;
class GFG {
// Calls CaseInsensitiveComparer.Compare
// with the parameters reversed.
public class myClass : IComparer {
int IComparer.Compare(Object a, Object b)
{
return ((new CaseInsensitiveComparer()).Compare(b, a));
}
}
// Main method
public static void Main()
{
// create and initalize new ArrayList, i.e. mylist
ArrayList mylist = new ArrayList();
mylist.Add("Welcome");
mylist.Add("to");
mylist.Add("geeks");
mylist.Add("for");
mylist.Add("geeks");
mylist.Add("2");
IComparer Comp1 = new myClass();
// sort the value of ArrayList
// using Sort(IComparer) method
mylist.Sort(Comp1);
foreach(Object ob in mylist)
{
Console.WriteLine(ob);
}
}
}
输出:
Welcome
to
geeks
geeks
for
2
排序(Int32,Int32,IComparer)
此方法用于使用指定的比较器对ArrayList中的一系列元素进行排序。
注意:此方法是O(n log n)运算,其中n是count,在最坏的情况下,它是O(n ^ 2)运算。
句法:
public virtual void Sort (int index, int count, IComparer comparer);
参数:
- index:要排序的范围的从零开始的索引,此参数的类型为System.Int32。
- count:计算要排序的范围的长度,此参数的类型为System.Int32 。
- 比较器:在元素比较期间使用的是IComparer实现。
例外情况:
- NotSupportedException:如果ArrayList为只读。
- InvalidOperationException:由于在比较两个元素时发生错误。
- ArgumentException:如果索引和计数未在ArrayList中指定有效范围。
- ArgumentOutOfRangeException:如果索引小于零。
例子:
// C# program to illustrate the use of
// Sort(Int32, Int32, IComparer) Method
using System;
using System.Collections;
class GFG {
// Main method
public static void Main()
{
// create and initalize new ArrayList
ArrayList mylist = new ArrayList();
mylist.Add("Welcome");
mylist.Add("to");
mylist.Add("geeks");
mylist.Add("for");
mylist.Add("GFG");
mylist.Add("2");
// sort the value of ArrayList from 0 to 4
// using Sort( Int32, Int32, IComparer) method
// here the value of IComparer is null
mylist.Sort(0, 4, null);
// Display the sorted string
foreach(string ob in mylist)
{
Console.WriteLine(ob);
}
}
}
输出:
for
geeks
to
Welcome
GFG
2
参考:
- https://docs.microsoft.com/zh-cn/dotnet/api/system.collections.arraylist.sort?view=netframework-4.7.2