Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

320
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda