Como Ordenar a lista

11 respostas
analistaerick

GRUPO A
Africa do Sul = 3 (3;3;0)
Mexico = 2 (1;2;-1)
Uruguai = 7 (3;1;2)
Franca = 2 (1;2;-1)

Bom galera, gostaria de saber como posso ordenar esta lista, é grupo, onde tem os times, números de pontos, gol marcados, gols sofridos e saldo de gols. A ordem deve ser por números de pontos ganhons por time, na classificação geral, em seguida, se houver empate por números de poontos, por saldo de gols, e por ultimo por gols marcados.

11 Respostas

LPJava

a classe ArrayList tem um metodo de ordenacao que vc escolhe um tipo de classificacao, mas se quiser personalizar terá que implementar usando comparable. dar uma pesquisada a respeito que vc acha.

dar uma olhada nesse post.

rogelgarcia

ArrayList nao… TreeSet… :slight_smile:

O seu objeto por implementar Comparable ou… vc pode passar um Comparator para o TreeSet…

Procure por ordenaçao na documentacao da API Collections

LPJava

rogelgarcia:
ArrayList nao… TreeSet… :slight_smile:

O seu objeto por implementar Comparable ou… vc pode passar um Comparator para o TreeSet…

Procure por ordenaçao na documentacao da API Collections

o arraylist pode ordenadar tem um metodo dele, caso seja por uma classificacao apenas, e tb temos o comparator e comparable. Mas, acho que meu post anterior parece que estava associado eles com arraylist e nao foi isso :D. mandei mal nessa hehe.

rogelgarcia

Qual método?

LPJava

estou sem api aqui, mas ele vem da classe Collections, é o metodo sort() e passamos uma lista como arg para ele. Se nao estou equivocado. Porem, ele permite apenas uma classificacao.

renamed

estou sem api aqui, mas ele vem da classe Collections, é o metodo sort() e passamos uma lista como arg para ele. Se nao estou equivocado. Porem, ele permite apenas uma classificacao.

Ele pode utilizar o método sort da classe Collections. Documentação aqui.
E não, ele não permite apenas uma classificação. Sua classe pode implementar a interface Comparator e, com isso, você decide como descobrir se um elemento vem antes ou depois de outro. Documentação aqui.

ok?

LPJava

estou sem api aqui, mas ele vem da classe Collections, é o metodo sort() e passamos uma lista como arg para ele. Se nao estou equivocado. Porem, ele permite apenas uma classificacao.

Ele pode utilizar o método sort da classe Collections. Documentação aqui.
E não, ele não permite apenas uma classificação. Sua classe pode implementar a interface Comparator e, com isso, você decide como descobrir se um elemento vem antes ou depois de outro. Documentação aqui.

ok?

se ele usar o metodo no modo padrao eh apenas uma classificacao, ate onde eu sei, implementar Comparator é outra historia.

analistaerick

Alguma dica do código?

rogelgarcia

Sobre o código a resposta são a segunda e a terceira respostas do tópico…

Sobre o método sort…

Esse método é um método estático da classe Collections … ou seja… nao é de ArrayList…

Ainda sobre o método sort…
vc tem duas opções:

  • Todos os objetos devem implementar Comparable
  • Ou passar como parametro um comparator…

Sobre a duvida entre classificacao e ordenacao…

O ArrayList tem uma ordem (ordem de insercao…)
Mas nao classificacao… (nao sei se estou confundindo os termos aqui… conferi em algumas fontes… mas ainda nao estou 100% confiante… sei que tem isso no livro de certificacao da Kate Sierra… mas emprestei o meu para alguém que nao devolveu … hehe dureza)

renamed

estou sem api aqui, mas ele vem da classe Collections, é o metodo sort() e passamos uma lista como arg para ele. Se nao estou equivocado. Porem, ele permite apenas uma classificacao.

Ele pode utilizar o método sort da classe Collections. Documentação aqui.
E não, ele não permite apenas uma classificação. Sua classe pode implementar a interface Comparator e, com isso, você decide como descobrir se um elemento vem antes ou depois de outro. Documentação aqui.

ok?

se ele usar o metodo no modo padrao eh apenas uma classificacao, ate onde eu sei, implementar Comparator é outra historia.

Não intendi qual o modo padrão.
Se você diz que o modo padrão é apenas passando a lista, haverá erro de compilação.

public static <T extends Comparable><? super T>> void sort(List<T> paramList)

Essa é a assinatura do método, como você pode ver, ele só aceita listas de elementos que implementem a interface Comparable.
Se sua lista é de elementos que não implementam essa interface, você é obrigado a chamar o método com essa assinatura, informando um Comparator para que sort possa ordenar a lista corretamente.

public static <T> void sort(List<T> paramList, Comparator<? super T> paramComparator)

ok?

L

A Classe ArrayList não é uma coleção classificada, nem possui método de classificação. A natureza da ArrayList é manter a ordem dos elementos na ordem de inserção.

A classe Collections é quem possui método de classificação, chamada sort().

No entanto, para classificar, você precisa implementar a interface Comparable e sobrescrever o método compareTo(), ou implementar a interface Comparator(), e sobrescrever o método compare().

Você define qual será a base para classificação.

Criado 11 de julho de 2010
Ultima resposta 11 de jul. de 2010
Respostas 11
Participantes 5