Ordenar

Pessoal, bom dia…

Minha pergunta é facil, mas nao estou conseguindo fazer…!!!

Preciso ordenar List, bem no caso o codigo já esta usando o metodo sort(), porem so esta ordenando um campo, no meu caso cliente e preciso que ordene primeiro as datas…

Existe um select, porem o order by nao esta funcionando neste caso, se alguem puder me ajudar fico grato…

vlw

Posta o seu SELECT ae, pq ele nao tah ordenando?

Eu poderia mandá-lo pesquisar no guj sobre como resolve este problema. Já foi explicado uma centena de vezes.
Mas fica mais uma …
Para ordenar objectos de classes que não têm ordem intrinseca deve-se implementar um, ou mais, Comparator.
Depois usar o metodo Collections.sort(list,comparator) para fazer a ordenação. É muito simples.

Cliente não tem ordem intrinseca, por isso implementar Comparable é errado. Implemente vários Comparator, um para cada campo que quer ordenar, ou um Comparator só onde vc passa o campo que quer ordenar. Como opção pode indicar ainda a direcção da ordenação ( ascendente ou descendente)

Um exemplo bobo.

import java.util.*;

/** Aqui supomos que não há alunos com o mesmo nome */
class Aluno {
    String nome;
    double nota;
    public Aluno (String pNome, double pNota) {
        nome = pNome; nota = pNota;
    }
    public String toString () {
        return String.format ("Nome=%s, Nota=%.2f; ", nome, nota);
    }
}

class AlunoComparator implements Comparator<Aluno> {
     public int compare (Aluno a1, Aluno a2) {
         return a1.nome.compareToIgnoreCase (a2.nome);
     }
}

class ListaAlunos {
    public static void main(String[] args) {
        Set<Aluno> alunos = new TreeSet<Aluno>(new AlunoComparator());
        alunos.add (new Aluno ("Luis Inacio", 5.0));
        alunos.add (new Aluno ("Fernando Henrique", 7.0));
        alunos.add (new Aluno ("Gabriel Pensador", 8.0));
        alunos.add (new Aluno ("Mano Brown", 5.0));
        alunos.add (new Aluno ("Gisele Bundchen", 10.0));
        
        Aluno procurado = new Aluno ("Natalia Guimaraes", 10);
        if (!alunos.contains (procurado)) {
            System.out.println ("aluno não encontrado");
        } else {
            System.out.println ("aluno encontrado", procurado);
        }
    }
}
import java.util.Collections;
import java.util.List;
import java.util.ArrayList;
import java.util.Comparator;

/*
 * Para compilar este programa:
 * javac Test126.java
 * Para rodar este programa (Windows):
 * chcp 1252
 * java -cp . Test126
 * Para rodar este programa (Linux):
 * java -cp . Test126
 */

class Presidente {
    String nome; 
    int inicio; 
    int fim; 
    public Presidente(String n, int i, int f) {
        nome = n; inicio = i; fim = f;
    }
    public String toString() {
        return nome + ": de " + inicio + " até " + fim;
    }
}

class ComparatorPresidente implements Comparator {
    boolean crescente = true;
    
    public ComparatorPresidente(boolean crescente) {
        this.crescente = crescente;
    }
    
    public int compare(Object o1, Object o2) {
        Presidente p1 = (Presidente) o1;
        Presidente p2 = (Presidente) o2;
        if (crescente) {
            return p1.inicio < p2.inicio ? -1 : (p1.inicio > p2.inicio ? +1 : 0);
        } else {
            return p1.inicio < p2.inicio ? +1 : (p1.inicio > p2.inicio ? -1 : 0);
        }
    }
}

class Test126 {
    public static void main(String[] args) {
        List teste = new ArrayList();
        teste.add (new Presidente ("Luis Inacio", 2002, 2005));
        teste.add (new Presidente ("Fernando Henrique", 1998, 2001));
        teste.add (new Presidente ("Fernando Henrique", 1994, 1997));
        
        
        // Em ordem crescente do início do mandato
        Collections.sort (teste, new ComparatorPresidente(true));
        System.out.println (teste);
        
        // Em ordem decrescente do fim do mandato
        Collections.sort (teste, new ComparatorPresidente(false));
        System.out.println (teste);
    }
}

Assim vc “sorteia” um ou mais atributos de um List

		List<BeanComparator> sortFields = new ArrayList<BeanComparator>();
		sortFields.add(new BeanComparator("descrProduto"));
		ComparatorChain multiSort = new ComparatorChain(sortFields);
		java.util.Collections.sort(listaProdutos, multiSort);

		//Reverse order
		List<BeanComparator> sortFields = new ArrayList<BeanComparator>();		
		sortFields.add(new BeanComparator("atrib2"));
		ComparatorChain multiSort = new ComparatorChain(sortFields);	
		multiSort.setReverseSort(0);
		java.util.Collections.sort(historicos, multiSort);

http://www.guj.com.br/posts/list/54036.java#284273

Veja se isto ajuda

[code]
private void ordenaListaConta(List list){
Collections.sort(list, new Comparator() {
public int compare(Object o1, Object o2) {
SuaClasse c1 = (SuaClasse) o1;
SuaClasse c2 = (SuaClasse) o2;
int retorno = (c1.getAlgumaCoisa()).compareTo(c2.getAlgumaCoisa());
if (retorno != 0)
return retorno;
retorno = (c1.getAlgumaCoisa2()).compareTo(c2.getAlgumaCoisa2());
if (retorno != 0)
return retorno;
retorno = (c1.getAlgumaCoisa3()).compareTo(c2.getAlgumaCoisa3());
if (retorno != 0)
return retorno;

			return retorno;
		}
	});
}[/code]