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;
}
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 < other.getNumero()){ // troquei o (>) por (<) porque é ordem descrescente
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.
if(nome > other.getNome()){
return 1;
}else if(nome < 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.
@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.