Boa tarde,
Estou aprendendo a respeito da stream API
estou tentando criar um programa, onde existe um curso, e esse curso possui uma lista de alunos matriculados nele.
Gostaria de filtrar dentro de um curso os alunos com uma média maior que um determinado valor.
Na minha mente o código seria algo do tipo:
aulas.stream().filter(c -> c.getAlunos().getAvaliacao() >= 8)
.collect(Collectors.toList());
e atribuir isso a uma nova lista, porém não compila.
Como deveria ser feito isso ? criar uma lista só com os alunos aprovados?
Segue todo o código:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
class Aluno {
private String nome;
private int matricula;
private int avaliacao;
public Aluno(String nome, int matricula, int avaliacao) {
super();
this.nome = nome;
this.matricula = matricula;
this.avaliacao = avaliacao;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public int getMatricula() {
return matricula;
}
public void setMatricula(int matricula) {
this.matricula = matricula;
}
public int getAvaliacao() {
return avaliacao;
}
@Override
public String toString() {
return "Aluno [nome=" + nome + ", matricula=" + matricula + ", avaliacao=" + avaliacao + "]";
}
}
class Aula {
private String nome;
private int duracao;
private List<Aluno> alunos = new ArrayList<>();
public Aula(String nome, int duracao) {
this.nome = nome;
this.duracao = duracao;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public int getDuracao() {
return duracao;
}
public void setDuracao(int duracao) {
this.duracao = duracao;
}
public List<Aluno> getAlunos() {
return alunos;
}
public void matricula(Aluno a1) {
this.alunos.add(a1);
}
}
public class ExemploStream {
public static void main(String[] args) {
Aluno a1 = new Aluno("Thiago", 2225, 9);
Aluno a2 = new Aluno("Tamires", 3235, 8);
Aluno a3 = new Aluno("Miguel", 4245, 5);
Aluno a4 = new Aluno("Lucas", 5255, 6);
Aluno a5 = new Aluno("Pedro", 6265, 4);
Aluno a6 = new Aluno("Joao", 6761, 10);
Aluno a7 = new Aluno("Isaque", 8741, 9);
Aluno a8 = new Aluno("Maria", 9838, 7);
Aula aula1 = new Aula("Java", 33);
aula1.matricula(a1);
aula1.matricula(a2);
aula1.matricula(a3);
aula1.matricula(a4);
aula1.matricula(a5);
aula1.matricula(a6);
aula1.matricula(a7);
aula1.matricula(a8);
List<Aula> aulas = Arrays.asList(aula1);
aulas.stream().filter(c -> c.getAlunos().getAvaliacao() >= 8).collect(Collectors.toList());
}
}