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