[RESOLVIDO] Atributo Específico de uma Lista

Pessoal, estou com a seguinte situação:

Imaginem que tenho uma turma, com uma lista de alunos, porém um desses alunos é o representante da sala, e a maneira de identificar isso no meu código é que o número da carteira dele é 1.

[code]public class Aluno{

private String nome;
private int numeroCarteira;

public String getNome(){
    return this.nome;
}

public void setNome(String nome){
    this.nome = nome;
}

public int getNumeroCarteira(){
    return this.numeroCarteira;
}

public void setNumeroCarteira(int numeroCarteira){
    this.numeroCarteira = numeroCarteira;
}

}

public class Turma{

private String nome;
private List<Aluno> alunos;

public String getNome(){
    return this.nome;
}

public void setNome(String nome){
    this.nome = nome;
}

public List<Aluno> getAlunos(){
    return this.alunos;
}

public void setAlunos(List<Aluno> alunos){
    this.alunos = alunos;
}

}[/code]só que o problema é o seguinte, eu preciso referenciar esse aluno específico na minha tela (xhtml).

Algo como: #{meuMB.turma.alunoRepresentante}

Tudo aqui é fictício, mas retrata um problema real que estou tendo agora no trabalho. Eu não posso alterar as classes criando identificadores, ou criando um aluno representante na minha turma. Tenho que mexer com a lista.

Qual a melhor forma de fazer?

o que fiz agora foi: public Aluno getAlunoRepresentante(){ for(Aluno aluno : alunos){ if(aluno.getNumeroCarteira == 1){ return aluno; } } return null; }

Mas imagino que não seja a melhor maneira. Alguém tem uma idéia?

Cara até onde sei não tem como fugir disso, tem que loopar e parar na hora que achar o que te interessa, exatamente como você fez.

É, era o que eu imaginava, mas sabe quando você termina de implementar, e fica com aquela sensação de que fez um código sujo? hehehe…

Bom, valeu aí! Se mais alguém tiver alguma sugestão (ou se puder confirmar se a maneira que fiz é correta) será muito bem vinda.

Cara, isso não tem muito remédio não. O que pode melhorar um pouco do seu código talvez fosse criar uma Map<Integer,Aluno>, para mapear o número da carteira para Aluno. Daí, na hora de retornar o representante basta fazer mapAlunos.get(1).

É, infelizmente parece que é o jeito hehehe. Não da pra fazer nada magicamente, rs.

Obrigado a todos que responderam, ja vou botar como resolvido porque vai ficar assim mesmo :slight_smile:

Opa, tranquilo, eu vi o RESOLVIDO ali, mas pensei em algo que talvez seja útil…

Na sua dúvida tu falas em usar no xhtml…

Bom então presumo que você vá utilizar um dataTable ou ou dataList, forEach, algo do gênero…

Então de certa forma você já estará iterando essa list, dessa forma se você utilizar um rendered="#{managedBean.aluno.nroCarteira == 1}" e dentro do componente que utiliza este rendered fazer a modificação na vizualização que você precisa… Espero ter ajudado…