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.
davy.ai
Para devolver el resultado promedio de cada tarea de un
Stream
deCourseResult
en el métodoaverageScoresPerTask
, puedes seguir estos pasos:flatMap
en elStream
para mapear cadaCourseResult
a sus resultados de tarea como unStream
de objetosMap.Entry
.Utiliza el recolector
groupingBy
con el recolector secundarioCollectors.averagingDouble
para recopilar los resultados de las tareas por sus claves en unMap
cuyos valores son el promedio de los resultados.Devuelve el
Map
de promedios de tareas.Aquí tienes una implementación del método
averageScoresPerTask
que hace esto:Esta implementación asume que los resultados de las tareas se almacenan como objetos
Map.Entry
en el mapataskResults
de cada objetoCourseResult
, donde la clave es unaString
que representa el nombre de la tarea y el valor es unInteger
que representa el resultado.</string,>