Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

319
Vistas
Filtrar valores no nulos de una colección en kotlin

Echa un vistazo a este kotlin one liner:

 val nonNullArr : List<NonNullType> = nullArray.filter {it != null}

El compilador da un error de tipo en esta línea, diciendo que una lista de anulables no se puede asignar a una lista de no nulos. Pero el filtro condicional se asegura de que la lista solo contenga valores no nulos. ¿Hay algo similar a !! operador que puedo usar en esta situación para compilar este código?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Parece lógico suponer que el compilador tendría en cuenta el predicado

 it != null

e inferir el tipo como

 List<NonNullType>

pero no es así.
Hay 2 soluciones:

 val nonNullList: List<NonNullType> = nullableArray.filterNotNull()

o

 val nonNullList: List<NonNullType> = nullableArray.mapNotNull { it }
over 4 years ago · Santiago Trujillo Denunciar

0

Hasta donde yo sé, no puede convertir tipos anulables en tipos no nulos simplemente verificando que no sean nulos. Para lograr lo que desea, debe asignar manualmente valores anulables a un tipo no nulo simplemente creando un objeto de tipo NonNull. Para ello, puede utilizar la función de extensión de mapa.

 val nullableArray: Array<String?> = arrayOf("abc", "xyz", null, "efg") val nonNullList: List<String> = nullableArray.filter { it != null }.map { it.toString() }

O puede usar el método filterNotNull() como @forpas sugirió en los comentarios

 val nonNullList: List<String> = nullableArray.filterNotNull()

¡Espero que te ayude!

over 4 years ago · Santiago Trujillo Denunciar

0

No puede asignar un tipo que admite valores NULL a un tipo de valor que no admite valores NULL. La coincidencia de tipos puede funcionar cuando asigna un valor, no después de llamar a la operación de filter .

 // the type-matching works before `.filter` is called val nonNullArr : List<NonNullType> = nullArray//.filter {it != null}

en cambio, si desea hacer esto sin un error o sin importar el tipo. Elimina el tipo del val , para que quede así

 val nonNullArr = nullArray.filter {it != null}

Espero eso ayude

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda