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

时间:2021-09-23 19:32:36

    当数组或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