Imprimir só um atributo de uma ArrayList

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 só 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.

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;
}
1 curtida

pmlm, muito mas muito obrigado!!