关于ArrayList的排序
1.微软的例子
代码
代码
代码
using System;
using System.Collections;
public class SamplesArrayList {
public class myReverserClass : IComparer {
// Calls CaseInsensitiveComparer.Compare with the parameters reversed.
int IComparer.Compare( Object x, Object y ) {
return( (new CaseInsensitiveComparer()).Compare( y, x ) );
}
}
public static void Main() {
// Creates and initializes a new ArrayList.
ArrayList myAL = new ArrayList();
myAL.Add( "The" );
myAL.Add( "quick" );
myAL.Add( "brown" );
myAL.Add( "fox" );
myAL.Add( "jumps" );
myAL.Add( "over" );
myAL.Add( "the" );
myAL.Add( "lazy" );
myAL.Add( "dog" );
// Displays the values of the ArrayList.
Console.WriteLine( "The ArrayList initially contains the following values:" );
PrintIndexAndValues( myAL );
// Sorts the values of the ArrayList using the default comparer.
myAL.Sort();
Console.WriteLine( "After sorting with the default comparer:" );
PrintIndexAndValues( myAL );
// Sorts the values of the ArrayList using the reverse case-insensitive comparer.
IComparer myComparer = new myReverserClass();
myAL.Sort( myComparer );
Console.WriteLine( "After sorting with the reverse case-insensitive comparer:" );
PrintIndexAndValues( myAL );
}
public static void PrintIndexAndValues( IEnumerable myList ) {
int i = 0;
foreach ( Object obj in myList )
Console.WriteLine( "\t[{0}]:\t{1}", i++, obj );
Console.WriteLine();
}
}
using System.Collections;
public class SamplesArrayList {
public class myReverserClass : IComparer {
// Calls CaseInsensitiveComparer.Compare with the parameters reversed.
int IComparer.Compare( Object x, Object y ) {
return( (new CaseInsensitiveComparer()).Compare( y, x ) );
}
}
public static void Main() {
// Creates and initializes a new ArrayList.
ArrayList myAL = new ArrayList();
myAL.Add( "The" );
myAL.Add( "quick" );
myAL.Add( "brown" );
myAL.Add( "fox" );
myAL.Add( "jumps" );
myAL.Add( "over" );
myAL.Add( "the" );
myAL.Add( "lazy" );
myAL.Add( "dog" );
// Displays the values of the ArrayList.
Console.WriteLine( "The ArrayList initially contains the following values:" );
PrintIndexAndValues( myAL );
// Sorts the values of the ArrayList using the default comparer.
myAL.Sort();
Console.WriteLine( "After sorting with the default comparer:" );
PrintIndexAndValues( myAL );
// Sorts the values of the ArrayList using the reverse case-insensitive comparer.
IComparer myComparer = new myReverserClass();
myAL.Sort( myComparer );
Console.WriteLine( "After sorting with the reverse case-insensitive comparer:" );
PrintIndexAndValues( myAL );
}
public static void PrintIndexAndValues( IEnumerable myList ) {
int i = 0;
foreach ( Object obj in myList )
Console.WriteLine( "\t[{0}]:\t{1}", i++, obj );
Console.WriteLine();
}
}
2.修改自网上的例子
代码
using System;
using System.Collections;
class Employee{
public string name;
public int age;
public string sex;
public string id;
}
class EmployeeCompareAge:System.Collections.IComparer {
public int Compare(object x,object y)
{
return ((Employee)x).age-((Employee)y).age;
}
}
class EmployeeCompareId:System.Collections.IComparer {
public int Compare(object x,object y)
{
string strSortX=(x as Employee).id;
string strSortY=(y as Employee).id;
strSortX=strSortX.Substring(strSortX.Length-3);
strSortY=strSortY.Substring(strSortY.Length-3);
//Console.WriteLine(strSortX);
//Console.WriteLine(strSortY);
return strSortX.CompareTo(strSortY);
}
}
class Example
{
public static void Main()
{
Employee ep1=new Employee();
ep1.name="小白";
ep1.age=21;
ep1.sex="男";
ep1.id="M003";
Employee ep2=new Employee();
ep2.name="小黑";
ep2.age=43;
ep2.sex="男";
ep2.id="M001";
Employee ep3=new Employee();
ep3.name="小红";
ep3.age=18;
ep3.sex="女";
ep3.id="F002";
ArrayList EmployeeList=new ArrayList();
EmployeeList.Add(ep1);
EmployeeList.Add(ep2);
EmployeeList.Add(ep3);
//按年龄排序
EmployeeCompareAge EmployeeCmpAge=new EmployeeCompareAge();
EmployeeList.Sort(EmployeeCmpAge);
PrintIndexAndValues(EmployeeList);
//按编号后三位排序
EmployeeCompareId EmployeeCmpId=new EmployeeCompareId();
EmployeeList.Sort(EmployeeCmpId);
PrintIndexAndValues(EmployeeList);
//Console.WriteLine();
}
public static void PrintIndexAndValues(IEnumerable myList) {
int i = 0;
Console.WriteLine("=====================");
foreach (Object obj in myList)
Console.WriteLine( "\t[{0}]:\t{1}", i++, (obj as Employee).name );
}
}
using System.Collections;
class Employee{
public string name;
public int age;
public string sex;
public string id;
}
class EmployeeCompareAge:System.Collections.IComparer {
public int Compare(object x,object y)
{
return ((Employee)x).age-((Employee)y).age;
}
}
class EmployeeCompareId:System.Collections.IComparer {
public int Compare(object x,object y)
{
string strSortX=(x as Employee).id;
string strSortY=(y as Employee).id;
strSortX=strSortX.Substring(strSortX.Length-3);
strSortY=strSortY.Substring(strSortY.Length-3);
//Console.WriteLine(strSortX);
//Console.WriteLine(strSortY);
return strSortX.CompareTo(strSortY);
}
}
class Example
{
public static void Main()
{
Employee ep1=new Employee();
ep1.name="小白";
ep1.age=21;
ep1.sex="男";
ep1.id="M003";
Employee ep2=new Employee();
ep2.name="小黑";
ep2.age=43;
ep2.sex="男";
ep2.id="M001";
Employee ep3=new Employee();
ep3.name="小红";
ep3.age=18;
ep3.sex="女";
ep3.id="F002";
ArrayList EmployeeList=new ArrayList();
EmployeeList.Add(ep1);
EmployeeList.Add(ep2);
EmployeeList.Add(ep3);
//按年龄排序
EmployeeCompareAge EmployeeCmpAge=new EmployeeCompareAge();
EmployeeList.Sort(EmployeeCmpAge);
PrintIndexAndValues(EmployeeList);
//按编号后三位排序
EmployeeCompareId EmployeeCmpId=new EmployeeCompareId();
EmployeeList.Sort(EmployeeCmpId);
PrintIndexAndValues(EmployeeList);
//Console.WriteLine();
}
public static void PrintIndexAndValues(IEnumerable myList) {
int i = 0;
Console.WriteLine("=====================");
foreach (Object obj in myList)
Console.WriteLine( "\t[{0}]:\t{1}", i++, (obj as Employee).name );
}
}
posted on 2010-12-28 00:05 LeeXiaoLiang 阅读(167) 评论(0) 收藏 举报

浙公网安备 33010602011771号