Ordenar um list

bom dia
alguem saberia um codigo para ordenar um lista em ordem decrescente assim

nome numero
joao 5
maria 3
jose 2
joao 5
ana 5

primeiro por numero e depois por nome ficaria assim
nome numero
ana 5
joao 5
joao 5
maria 3
jose 2

Você quer fazer a manipulação na mão? ou usar métodos utilitários?

por que você pode usar o Collections.sort() que ordena qualquer coleção.

mas para isso o seu objeto da lista precisa implementar a interface Comparable, onde você define os parâmetros de comparação.

ex:

[code]public class Objeto implements Comparable{

private int numero;

@Override
public int compareTo(Objeto other){
	if(numero > other.getNumero()){
		return 1; // retorne qualquer valor positivo para indicar que é maior
	}else if(numero < other.getNumero()){
		return -1; // retorne qualquer valor negativo para indicar que é menor
	}else{
		return 0;
	}
}

public int getNumero(){
	return numero;
}

public void setNumero(int numero){
	this.numero = numero;
}

}[/code]

mas no caso ai so ordena por numero queria que ordenasse tanto por numero e nome junto

usa o compareTo da classe String.

Deixa eu ver se entendi. Você quer ordenar primeiro por núiero em ordem decrescente. Em seguida por nome em ordem crescente. É isso?
Então teria que ordenar primeiro por número, na ordem descrescente. Quando os números forem iguais, aí ordenaria por nome, na ordem crescente. Concorda?
Se for isso, acho que poderia usar o código do digaoneves com uma pequena modificação:

@Override public int compareTo(Objeto other){ if(numero &lt; other.getNumero()){ // troquei o (&gt;) por (&lt;) porque é ordem descrescente return 1; // retorne qualquer valor positivo para indicar que é maior }else if(numero &gt; other.getNumero()){ return -1; // retorne qualquer valor negativo para indicar que é menor }else{ //números iguais, comparo os nomes. if(nome &gt; other.getNome()){ return 1; }else if(nome &lt; other.getNome()){ return -1; }else{ return 0; } } }

Observe no código que eu verifico primeiro se um número é menor que outro. Depois verifico se é maior. Se não for menor nem maior, é porque é igual, certo?
Então no else (números iguais), comparo os nomes.
Observe também que eu troquei o menor por maior na comparação de número, porque a ordem é decrescente.
Não esqueça de incluir a propriedade nome e os métodos de acesso getNome() e setNome().
Acho que funciona, favor dizer se resolveu.

deu erro dizendo que para string nao pode ser feito esse tipo de comparação

Que comparação tu usou com a String ?

Ok, acho que o código abaixo resolve:

@Override public int compareTo(Objeto other){ if(numero < other.getNumero()){ return 1; // retorne qualquer valor positivo para indicar que é maior }else if(numero > other.getNumero()){ return -1; // retorne qualquer valor negativo para indicar que é menor }else{ //números iguais, comparo os nomes. return nome.compareTo(other.getNome()); } }

Estou usando o método compareTo() da classe String. Este método irá retornar 1, -1 ou zero como queremos. A ideia é a mesma: número igual, comparo os nomes.

[quote]

Que comparação tu usou com a String ?[/quote]

igual ele mostrou no codigo acima,mas eu acho que tem usar o compareTo