Ajuda com Iterator

Estou fazendo um programa que vai simular uma votação. Esta é a classe que representara o candidato e seus votos:

[code]public class Candidato {
private String nome;
private String cod;
private int votos;

public Candidato(String nome, String cod) {
	this.nome = nome;
	this.cod = cod;
	votos = 0;
}

public void addVoto() {
	votos++;
}

[/code]
Eu terei uma LinkedList com os candidatos que já estara instanciada e zerada quando eu começar a votação. Quando quero efetuar um voto, passo por parametro o codigo do candidato e preciso procurar na LinkedList qual dos candidatos possui aquele codigo e então incrementar sua quantidade de votos por meio do addVoto().
Eu consigo encontrar qual elemento da lista é o candidato que eu quero, mas eu não sei como fazer pra dar um addVoto nele.

	private void Votar(String codigo) {
		while(iterator.hasNext()){
			if(iterator.next().getCod().equals(codigo)){
				//não sei o que fazer aqui
			}
				
		}
		}

Vc pode usar o iterator.next(), que vai retornar o seu objeto.

Dai vc chama o addVoto nele e após isso

chama o método set (int index, Object element) a partir do seu objeto da sua lista.

Esse método vai mudar o objeto na posição da index da lista e o objeto que vai modificar o da lista.

Dai após a lista deve ficar atualizada.

OBS: Não cheguei a testar. Favor implementar e dizer se funcionou.

Se alguém disser uma implementação melhor, por favor fique a vontade.

Outra coisa. Se os candidatos não são repetidos, talvez não fosse melhor usar uma implementação de set.
Daí você teria que implementar o hash code e equals para o Candidato e ao invés de chamar o método set la de list, chamaria o remove passando o objeto que você pegou com o next e chamaria add após para atualizar com o novo objeto atualizado.

[quote=lele_vader]Vc pode usar o iterator.next(), que vai retornar o seu objeto.

Dai vc chama o addVoto nele e após isso

chama o método set (int index, Object element) a partir do seu objeto da sua lista.

Esse método vai mudar o objeto na posição da index da lista e o objeto que vai modificar o da lista.

Dai após a lista deve ficar atualizada.

OBS: Não cheguei a testar. Favor implementar e dizer se funcionou.

Se alguém disser uma implementação melhor, por favor fique a vontade.

Outra coisa. Se os candidatos não são repetidos, talvez não fosse melhor usar uma implementação de set.
Daí você teria que implementar o hash code e equals para o Candidato e ao invés de chamar o método set la de list, chamaria o remove passando o objeto que você pegou com o next e chamaria add após para atualizar com o novo objeto atualizado.
[/quote]

Não é preciso chamar o set da lista, a variável de referência estará referenciando o msm objeto da lista, ou seja, modificando o estado do objeto dentro do método votar, tb modificará o estado do objeto da lista.

Desculpem mas eu ainda sou noob e não sei como obter o índice da lista em que o iterator está. Não tem um jeito de eu manipular um objeto diretamente na lista sem dar next()?
O problema é que eu teria que dar um next() pra verificar se é o candidato com o codigo e outro next() pra addVoto(). Se tivesse um jeito de manipular o objeto atual sem dar next() resolveria o meu problema.

Eu também poderia fazer a “gambiarra” de ir incrementando um índice mas creio que haja uma solução mais sofisticada que isso:

[code]
private void Votar(String codigo) {
int i = -1;
while(iterator.hasNext()){
i++;
Candidato atual = iterator.next();
if(atual.getCod().equals(“codigo”)){
atual.addVoto();
urna.set(i, atual);
}

	}
	}[/code]