Imprimir só um atributo de uma ArrayList

2 respostas Resolvido
T

Boas pessoal, a questao é a seguinte, é que pedido que imprima só os nomes dos alunos de da turma, mas eles estao numa ArrayList que alem dos nomes contem o numero de aluno

Vou por só o essencial para nao ficar muito extenso

Se eu fizer desta maneira, alem de imprimir os nomes, imprime a ArrayList toda

(isto dentro de uma classe Sistema)

public ArrayList<Aluno> listaNomes (){
    ArrayList<Aluno> novaLista = new ArrayList<>();
    for (Aluno c : lista){    
        System.out.println(c.getNome());
        novaLista.add(c);
    }
    return novaLista;
}
No main:

Sistema s = new Sistema;

ArrayList  aaa = s.listNomes

System.out.println(aaa);

Vai imprimir primeiro  os nomes, depois os nomes mais o numero do aluno dentro de []

Se eu criar um método void, consigo fazer isso, mas penso que nao é o mais indicado

(Dentro de uma classe Sistema)

public void imprimirNomes (){

for (Aluno c : listaAlunos){

System.out.println(c.getNome());

}

}

No main:
s.imprimirNomes

Sera que é correcto e so estou a fazer confusao?

Ja agora a minha outra questao é a seguinte.
Da para fazer um método que crie uma nova ArrayList, mas que só contenha os nomes e nao o numero? Caso isso fosse possivel, depois imprimia só essa ArrayList.

2 Respostas

pmlm
Solucao aceita

Podes fazer das duas formas, mas estás a tentar fazer um mistura das duas.

Podes simplesmente, como tens no teu segundo exemplo, ter um método que imprime os nomes:

public void imprimirNomes (){
    for (Aluno c : listaAlunos){
        System.out.println(c.getNome());
    }
}

Ou podes ter um método para te devolver a lista de nomes. Mas aqui o teu problema é que estás a devolver uma lista de Aluno quando o que queres é uma lista de String (já que nome é uma String)

public ArrayList<String> listaNomes (){
    ArrayList<String> novaLista = new ArrayList<>();
    for (Aluno c : lista){    
        novaLista.add(c.getNome());
    }
    return novaLista;
}
T

pmlm, muito mas muito obrigado!!

Criado 14 de janeiro de 2021
Ultima resposta 14 de jan. de 2021
Respostas 2
Participantes 2