para isso segue o seguinte:
considerando que temos uma classe específica em nosso projeto, para o exemplo, vou me basear nessa abaixo:
public class MyObj {
private int myValue;
priate String desc;
public MyObj() {}
public void setMyValue( int value ) { this.myValue = value; }
public int getMyValue() { return this.myValue; }
public void setDesc( String newDesc ) { this.desc = newDesc; }
public String getDesc() { return this.desc; }
}
para esta classe, defini uma classe de comparação, especifica para esta classe:
import java.util.Comparator;
public class MyObjComparator implements Comparator {
public int compare(Object o1, Object o2) {
MyObj ob1 = (MyObj)o1;
MyObj ob2 = (MyObj)o2;
if( ob1.getMyValue() == ob2.getMyValue() ) {
return 0;
} else if( ob1.getMyValue() < ob2.getMyValue() ) {
return -1;
} else if( ob1.getMyValue() > ob2.getMyValue() ) {
return 1;
}
return 0;
}
}
considerando que tenho uma coleção|lista de objetos da minha classe definida, anteriormente:
List myObjList...
para ordenar, utilize um código como esse, que irá utilizar a classe de comparação:
Collections.sort( myObjList, new MyObjComparator() );
com isso resolve o problema, relacionado a ordenar uma coleção|lista de objetos complexos (definidos no teu projeto)