tutorial traduccion peliculas friends app groovy

traduccion - Eliminar elementos nulos de una lista en Groovy



groovy traduccion (8)

¿Cuál es la mejor manera de eliminar elementos nulos de una lista en Groovy?

ex: [null, 30, null]

quiero regresar: [30]


Creo que encontrará que este es el más corto, suponiendo que no le molesten otros valores "falsos" que también desaparecen:

println([null, 30, null].findAll())

Colección pública findAll () Encuentra los elementos que coinciden con el Cierre de IDENTIDAD (es decir, coincide con la verdad Groovy). Ejemplo:

def items = [1, 2, 0, falso, verdadero, '''', ''foo'', [], [4, 5], nulo] assert items.findAll () == [1, 2, true, ''foo'' , [4, 5]]


El método findAll debe hacer lo que necesita.

​[null, 30, null]​.findAll {it != null}​


Esto hace una eliminación in situ de todos los elementos nulos.

myList.removeAll { !it }

Si el número 0 está en su dominio, puede verificarlo contra null

myList.removeAll { it == null }


Esto también se puede lograr con grep :

assert [null, 30, null].grep()​ == [30]​

o

assert [null, 30, null].grep {it}​ == [30]​

o

assert [null, 30, null].grep { it != null } == [30]​


Otra forma de hacerlo es [null, 20, null].findResults{it} .


Simplemente [null].findAll{null != it} si es nulo, entonces devuelve false por lo que no existirá en la nueva colección.


Solo usa menos:

[null, 30, null] - null


aquí hay una respuesta si no quieres mantener la lista original

void testRemove() { def list = [null, 30, null] list.removeAll([null]) assertEquals 1, list.size() assertEquals 30, list.get(0) }

en una práctica prueba de unidad dandy