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:
publicclassObjetoimplementsComparable<Objeto>{privateintnumero;@OverridepublicintcompareTo(Objetoother){if(numero>other.getNumero()){return1;// retorne qualquer valor positivo para indicar que é maior}elseif(numero<other.getNumero()){return-1;// retorne qualquer valor negativo para indicar que é menor}else{return0;}}publicintgetNumero(){returnnumero;}publicvoidsetNumero(intnumero){this.numero=numero;}}
J
jobs
mas no caso ai so ordena por numero queria que ordenasse tanto por numero e nome junto
guilherme.dio
usa o compareTo da classe String.
al.barbosa
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.
J
jobs
deu erro dizendo que para string nao pode ser feito esse tipo de comparação
nel
Que comparação tu usou com a String ?
al.barbosa
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.
J
jobs
Que comparação tu usou com a String ?
igual ele mostrou no codigo acima,mas eu acho que tem usar o compareTo