Curiosiade sobre ArrayList

Opa! eu estou usando aqui um método que faço a comparação de 4 valores float. na verdade eu tenho um objeto “MyClass” por exemplo como abaixo

public class MyClass {
   String nome;
   int num1;
   int num2
   int num3;
}

nesse valores eu estou somando 2 deles. e ordenando de acordo com o objeto que tiver o maior valor exemplo

obj 1 obj2

num1 = 2 num1 = 1
num2 = 3 num2 = 5
num3 = 4 num3 = 1

se eu for ordenar esses objetos dentro de um array list eu não posso usar o método sort, porque se no caso eu quizer ordenar pela soma de num1 com num2 o método sort não faz isso… Eu estou fazendo da forma mais braçal possível pegando os valores de num1,2 e 3 e ordenando em um laço… Alguem tem alguma ideia se eu poderia mudar isso e usar o método sorrt do ArrayList?

Valeu

Deixa eu resumir… Tenho um ArrayList de objetos esses objetos tem vários inteiros, quero chamar o método sort de acordo com 1 desses inteiros, é possível?

Olá BrunoBastos,

Você pode implementar um Comparator:

[code]public class ComparadorDeBrunoBastos implements Comparator {
public int compare(MyClass c1, MyClass c2) {
int soma1 = c1.num1 + c1.num2;
int soma2 = c2.num1 + c2.num2;
return (soma1 - soma2);
}
}

List lista = new ArrayList();
// preenche
Collections.sort(lista, new ComparadorDeBrunoBastos());[/code]

Não sei se entendi direito a lógica da sua ordenação, mas a idéia é essa. Teste aí e diga se funcionou.

Até mais, :wink:

opa CD1 aqui não to podendo usar java 5 porque ta rodando 1.4 no grid =/

eu dei uma mudada geral na verdade agora acho que ficou até mais fácil. Agora não preciso mais comparar 2 numeros e sim apenas 1!

Agora eu tenho um ArrayList de objetos assim, os objetos tem vários numeros int, e um desses int se chama porcentagem. é AI que eu vou ter que ordenar. Apenas ordenar os objetos de acordo com o que tiver maior porcentagem!

Olá BrunoBastos,

Então tente assim:

[code]public class ComparadorDeBrunoBastos implements Comparator {
public int compare(Object o1, Object o2) {
MyClass c1 = (MyClass) o1;
MyClass c2 = (MyClass) o2;
return (c1.getPorcentagem() - c2.getPorcentagem());
}
}

List lista = new ArrayList();
// preenche
Collections.sort(lista, new ComparadorDeBrunoBastos());[/code]

Até mais, :wink:

AEW! ja é a 3a vez que vejo um código assim e não tinha entendido!! agora funcionu valeu pela ajuda hehehe + de 30 linhas de código a menos xD