Como converter uma List de Disciplinas para uma List de String

7 respostas Resolvido
java
G

Estou recebendo do meu banco de dados uma List de Disciplinas, porem precisava converter essa lista em uma List de Strings, como faço ?

7 Respostas

D

Cria uma instância de List<String>, depois, itera sobre a lista de Disciplina e vai preenchendo a lista de String com o nome da disciplina.

G

Estou realizando dessa forma porem sem sucesso pode me apontar o erro ?

public List<String> pesquisaDisciplina(String numeroInscricao){
        List<String> disciplinaret = null;
        List<Disciplina> disciplinas;
        disciplinas = service.listarDisciplina(numeroInscricao);
        for (Iterator<Disciplina> iterator = disciplinas.iterator(); iterator.hasNext();) {
            Disciplina next = iterator.next();
            disciplinaret.add(next.getDisciplina());
        }
        return disciplinaret;
    }
D

Por que isso está como null, se você ṕretende inserir as disciplinas nesse objeto?

Do jeito que está, esta linha vai gerar um NullPointerException

G

Tinha utilizado apenas como inicialização, pois quando fiz sem o netbeans tinha apontado como erro a não inicialização da mesma.

G

Como seria a maneira correta de realizar essa interação ?

D

Cara, você sabe o que está fazaendo? Você entendeu o que eu disse sobre o null pointer exception e sobre inicializar a variável? Se sim, qual a dúvida, pois a resposta está bem clara.

W
Solucao aceita

Converter a lista eu acho que não tem como.

Porém vc pode facilmente extrair a lista de String a partir da lista de Disciplina.

Com Java 8 ou superior vc faria assim:

List<String> nomes = disciplinas.stream()
                                .map(Disciplina::getNome)
                                .collect(Collectors.toList());

Fiz um exemplo funcional:

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

class Disciplina {
    private int id;
    private String nome;

    Disciplina(int id, String nome) {
        this.id = id;
        this.nome = nome;
    }

    String getNome() {  return this.nome;  }

    @Override  public String toString() {
        return String.format("{ id: %d, nome: %s }", this.id, this.nome);
    }
}

public class Main {
    public static void main(String[] args) {
        List<Disciplina> disciplinas = new ArrayList<>();

        disciplinas.add(new Disciplina(0, "Matemática"));
        disciplinas.add(new Disciplina(0, "Português"));
        disciplinas.add(new Disciplina(0, "Física"));
        disciplinas.add(new Disciplina(0, "Artes"));

        System.out.println(disciplinas);

        List<String> nomes = disciplinas.stream()
                                        .map(Disciplina::getNome)
                                        .collect(Collectors.toList());

        System.out.println(nomes);
    }
}

E aqui ele rodando: https://repl.it/@wldomiciano/StreamMapCollectExample

Criado 1 de março de 2019
Ultima resposta 1 de mar. de 2019
Respostas 7
Participantes 3