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.

“filter with map” arroja una excepción de puntero nulo si alguno de los objetos tiene valores nulos en Java.

Estoy tratando de iterar mi mapa y filtrar su lista usando este método, pero si no tengo un valor disponible para esa propiedad (id), arroja una excepción de puntero nulo en Java.

¿Cómo puedo filtrar de tal manera que itere mi hashmap y filtre el valor si el id coincide con el código dado?

data.entrySet().stream()
       .filter(a -> a.getValue().stream()
           .anyMatch(l -> l.id.equals(código)))
        .collect(Collectors.toMap(
             e -> e.getKey(),
             e -> e.getValue()));

StackTrace:

java.lang.NullPointerException
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para evitar la excepción de puntero nulo al filtrar por la “id” en un hashmap, puedes agregar una verificación de nulo para la “id” utilizando la clase Optional en Java. Aquí tienes un fragmento de código actualizado con la verificación de nulo:

    data.entrySet().stream()
         .filter(a -> a.getValue().stream()
         .anyMatch(l -> Optional.ofNullable(l.id)
         .orElse("").equals(code)))
         .collect(Collectors.toMap(
              e -> e.getKey(),
              e -> e.getValue()));
    

    Con este código actualizado, si la propiedad “id” es nula en el hashmap, se establecerá por defecto como una cadena vacía al comparar con el valor de código proporcionado. Esto debería evitar que ocurra la excepción de puntero nulo.

Comments are closed.