es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

API de transmisión – cómo devolver un mapa de nombre de tarea único: resultado promedio?

Tengo una clase CourseResult

public class CourseResult {
    private final Person person;
    private final Map<String, Integer> taskResults; // Aquí se guardan los nombres y resultados de las tareas

    public CourseResult(final Person person, final Map<String, Integer> taskResults) {
        this.person = person;
        this.taskResults = taskResults;
    }

    public Person getPerson() {
        return person;
    }

    public Map<String, Integer> getTaskResults() {
        return taskResults;
    }
}

Aquí está la firma de mi método

public Map<String, Double> averageScoresPerTask(Stream<CourseResult> programmingResults) {
}

Necesito devolver el resultado promedio de cada tarea.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para devolver el resultado promedio de cada tarea de un Stream de CourseResult en el método averageScoresPerTask, puedes seguir estos pasos:

    1. Utiliza el método flatMap en el Stream para mapear cada CourseResult a sus resultados de tarea como un Stream de objetos Map.Entry.
    2. Utiliza el recolector groupingBy con el recolector secundario Collectors.averagingDouble para recopilar los resultados de las tareas por sus claves en un Map cuyos valores son el promedio de los resultados.

    3. Devuelve el Map de promedios de tareas.

    Aquí tienes una implementación del método averageScoresPerTask que hace esto:

    public Map<string, double=""> averageScoresPerTask(Stream<courseresult> programmingResults) {
        return programmingResults
                .flatMap(result -> result.getTaskResults().entrySet().stream())
                .collect(Collectors.groupingBy(
                        Map.Entry::getKey,
                        Collectors.averagingDouble(Map.Entry::getValue)
                ));
    }
    

    Esta implementación asume que los resultados de las tareas se almacenan como objetos Map.Entry en el mapa taskResults de cada objeto CourseResult, donde la clave es una String que representa el nombre de la tarea y el valor es un Integer que representa el resultado.</string,>

Comments are closed.