C#自定义对象排序(数组/ArrayList)

http://www.cnblogs.com/irvinow/archive/2011/05/01/2033942.html


当数组或ArrayList的元素为自定义类时,只要该类实现了Comparable接口,就可以进行排序。

    以下面的自定义类MyClass为例:

 

复制代码
class  MyClass  implements  Comparable {
     
private  String name = "" ;
     
private   int  value  =   0 ;
     
     
public  MyClass() {
     }

     
public  MyClass( int  value,String name) {
      
this .value  =  value;
      
this .name = name;
     } 
     
     
public   void  setValue( int  value) {
      
this .value  =  value;
     }
     
     
public   int  getValue() {
      
return  value;
     }
     
     
public   void  setName(String name) {
          
this .name  =  name;
         }
         
     
public  String getName() {
      
return  name;
     }
     
     
public   int  compareTo(Object o) {
      MyClass tgt 
=  (MyClass)o;  
      
return  (  this .value  <  tgt.getValue()  ?   - 1  : (  this .value  ==  tgt.getValue()  ?   0  :  1 ));
     } 
  };
复制代码

 

若以数组的方式进行排序,方法如下:

复制代码
MyClass[] test  =   new  MyClass[ 5 ];
test[
0 =   new  MyClass( 5 , " five " );
test[
1 =   new  MyClass( 2 , " two " );
test[
2 =   new  MyClass( 3 , " three " );
test[
3 =   new  MyClass( 1 , " one " );
test[
4 =   new  MyClass( 4 , " four " );
 
java.util.Arrays.sort(test);   
// Sort进行的是升序排列,打印test的结果为1,2,3,4,5
复制代码

 



若以ArrayList的方式进行排序,方法如下:

ArrayList test =   new  ArrayList(); 
for ( int  i = 1 ; i <= 5 ; i ++ ){
    test.add(
new  MyClass(i, " Name " ));                   
    }
Collections.sort(test);  
// Sort进行的是升序排列,打印test的结果为1,2,3,4,5
Collections.reverse(test);   // Sort进行的是降序排列,打印test的结果为5,4,3,2,1

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值