我正在 Java 8 中使用 Streams。我需要在 Colegio 类中实现一个方法,它从 Curso 类中的列表“inscriptionList”返回每个注释 (Inscripcion.getNota())。使用 filter() 可以通过参数传递其“名称”(nombreCurso) 来了解 Curso 的音符。该方法必须使用 Streams 来实现。我不明白 map() 方法如何使用列表作为参数来工作。有可能是这样的吗? (void notasDelCurso(nombreCurso))
在 Colegio 类(class)中:
public class Colegio {
private List<Curso> cursos;
//Constructor and getter omitted
public void notasDelCurso(String nombreCurso){
cursos.stream()
.filter(s -> s.getNombreCurso().equals(nombreCurso))
.map(s -> s.getInscripcionList().stream()
.map(j -> j.getNota()))
.forEach(s -> System.out.println(s));
}
光标:
public class Curso {
private String nombreCurso;
private Integer cupo;
private double notaAprobacion;
private List<Inscripcion> inscripcionList;
//Constructor and getter omitted
铭文:
public class Inscripcion {
private Alumno alumno;
private Curso curso;
private long nota;
//Constructor and getter omitted
输出: java.util.stream.ReferencePipeline$3@5fd0d5ae
最佳答案
I don't understand how the map() method works using a List as an argument
map
方法根据您提供的Function
将当前实体类型转换为另一种类型。
The output: java.util.stream.ReferencePipeline$3@5fd0d5ae
出于同样的原因,您的案例中的输出是打印您已将初始实体映射到的Stream
。
在处理 List 或任何其他实体集合时,您想要展平集合,并且在转换时可以使用 flatMap
来自Stream
的操作。在您共享的代码中,您可以按以下形式使用它:
.flatMap(s -> s.getInscripcionList().stream()
.map(j -> j.getNota()))
关于java - Streams 中的 map() 如何工作以及当参数是 Collection 时如何使用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61534719/