Ordenar Vetor de Objetos

2 respostas
B

Ae pessoal, eu tenho um vetor do tipo candidato com nome(String) e votos(int), posso ordenar o vetor pela quantidade de votos?

Vlew

2 Respostas

M

claro, tu pode fazer um método bubble sort da vida, pegando o getVotos() de cada candidato… nao tem diferença nenhuma de qualquer outra ordenação, o criterio só vai ser o getVotos(), ao invéz do conteudo de cada posição do vetor…(como vc devia fazer nas primeiras aulas hehe)

J
É melhor usar um Comparator ou fazer Candidato ser Comparable e depois usar alguns metodos para comparação. Com Comparator fica algo assim:
import java.util.*;

public CandidatoComparator implements Comparator {
	public int compare(Object obj1, Object obj2) {
		Candidato c1 = (Candidato)obj1;
		Candidato c2 = (Candidato)obj2;

		int result = -1;
		if(c1.getvotos() > c2.getVotos()) {
			result = 1;
		}	else if (c1.getvotos() == c2.getVotos()){
			result = 0;
		}
		return result;
	}

	public boolean equals(Object other) {
		return other == this || other instanceof CandidatoComparator;
	}
}
E na hora de ordenar seu Vector:
Comparator comparator = new CandidatoComparator();
Collections.sort(vectorCandidator, comparator);
Claro, vc poderia melhorar o Comparator criando-o com algum paremetro que indicasse se a ordenação e ascendente ou descendente.

valeuz...

Criado 25 de setembro de 2004
Ultima resposta 25 de set. de 2004
Respostas 2
Participantes 3