gpt4 book ai didi

java - Streams 中的 map() 如何工作以及当参数是 Collection 时如何使用它

转载 作者:行者123 更新时间:2023-12-04 10:07:00 25 4
gpt4 key购买 nike

我正在 Java 8 中使用 Streams。我需要在 Colegio 类中实现一个方法,它从 Curso 类中的列表“inscriptionList”返回每个音符 (Inscripcion.getNota())。使用 filter() 来了解通过参数传递其“名称”(nombreCurso)的 Curso 的注释。该方法必须使用 Streams 实现。我不明白 map() 方法如何使用 List 作为参数工作。它可能是这样的吗? (void notasDelCurso(nombreCurso))

在 Colegio 类中:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com