Estou recebendo do meu banco de dados uma List de Disciplinas, porem precisava converter essa lista em uma List de Strings, como faço ?
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.
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;
}
Por que isso está como null, se você ṕretende inserir as disciplinas nesse objeto?
Do jeito que está, esta linha vai gerar um NullPointerException
Tinha utilizado apenas como inicialização, pois quando fiz sem o netbeans tinha apontado como erro a não inicialização da mesma.
Como seria a maneira correta de realizar essa interação ?
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.
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