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.

Seleccione a la persona con la puntuación más baja utilizando Java Stream.

Tengo el json anterior:

[
    {
        "name": "Jonh",
        "scores": [{"score": 6 }, {"score": 4}]
    },
    {
        "name": "David",
        "scores": [{"score": 3}, { "score": 8}]
    }
]

Mi clase:

public class Person{
    private String name;
    private Collection<score> scores;
    // getters/setters
}

public class Score{
    private Integer score;
    // getters/setters
}

Si solo hubiera una persona, usaría el código a continuación para obtener la puntuación más baja:

Score s = list.stream()
              .min(Comparator.comparingInt(Score::getScore))
              .get();

Pero para obtener a la persona con la puntuación más baja usando stream, no tuve éxito.
Necesito seleccionar a la persona que tenga la puntuación más baja usando Java 8 y stream.
¿Cuál es la solución más adecuada?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para obtener la persona con la puntuación más baja usando Java 8 y stream, puedes utilizar el código a continuación:

    Person person = list.stream()
                        .min(Comparator.comparingInt(p -> p.getScores()
                                                        .stream() 
                                                        .mapToInt(Score::getScore)
                                                        .min()
                                                        .orElse(0)))
                        .orElse(null);
    

    Este código primero encuentra la persona con la puntuación más baja, comparando la puntuación mínima de cada una de las puntuaciones de la persona. Utiliza el método min() para encontrar la puntuación mínima, y el método orElse() para manejar los casos en los que la persona no tiene puntuaciones. Una vez que encuentra a la persona con la puntuación más baja, devuelve esa persona como resultado.

    Ten en cuenta que esto asume que cada persona tiene al menos una puntuación. Si esto no está garantizado, es posible que necesites añadir algunas comprobaciones adicionales de errores.

Comments are closed.