terça-feira, 6 de novembro de 2007

Java : ordenando uma coleção|lista de objetos, costumizado

algo bem útil, que as vezes quebra um galho quando estamos trabalhando com coleções e listas... as vezes precisamos ordenar, mas como fazer para ordenar uma coleção de objetos complexos?

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 setMyValueint value ) { this.myValue = value; }
  public int getMyValue() { return this.myValue; }

  public void setDescString 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;
        ifob1.getMyValue() == ob2.getMyValue() ) {
            return 0;    
        else ifob1.getMyValue() < ob2.getMyValue() ) {
            return -1;
        else ifob1.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.sortmyObjList, new MyObjComparator() );

com isso resolve o problema, relacionado a ordenar uma coleção|lista de objetos complexos (definidos no teu projeto)