¿Cuál es la mejor manera de eliminar elementos nulos de una lista en Groovy?Eliminar elementos nulos de una lista en Groovy
ejemplo: [null, 30, null]
quieren volver: [30]
¿Cuál es la mejor manera de eliminar elementos nulos de una lista en Groovy?Eliminar elementos nulos de una lista en Groovy
ejemplo: [null, 30, null]
quieren volver: [30]
aquí es una respuesta si usted no desea 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 unidad de prueba excelente práctico
+1 para la solución más legible (lee como: "eliminar todos los nulos") –
El método findAll debe hacer lo que necesita.
[null, 30, null].findAll {it != null}
+1 para una solución que no cambie la lista original –
'[null, 30, null] .findAll {it}' hará. –
Thomas, findAll {it} eliminará 0 y null.Y si eso es lo que desea, entonces también puede hacer un findAll() –
sólo tiene que utilizar menos:
[null, 30, null] - null
Esto se ve simple y genial, y me ayudó –
+1 The ¡la mejor respuesta! –
También se puede usar [nulo, 30, nulo] .minus (nulo). Eso me parece más legible. La versión con '-' recuerda el abuso del operador SBT. –
pienso 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())
pública Colección findAll() encuentra los elementos que coincidan con el Cierre IDENTIDAD (es decir, haciendo juego Groovy verdad). Ejemplo:
def items = [1, 2, 0, falso, verdadero, '', 'foo', [], [4, 5], nulo] assert items.findAll() == [1, 2, es cierto, 'foo', [4, 5]]
Simplemente [null].findAll{null != it}
si it
es nulo entonces de regreso falsa por lo que no existirá en nueva colección.
'assertEquals [], [0, false, null] .findAll {it}' –
Tienes razón, gracias. –
Esto también se puede lograr mediante 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 manera de hacerlo es [null, 20, null].findResults{it}
.
Esto hace una eliminación in situ de todos los elementos nulos.
myList.removeAll { !it }
Si el número 0 está en su dominio se puede comprobar en contra nula
myList.removeAll { it == null }
[null, 30, null].grep()
retorno [30]
http://docs.groovy-lang.org/latest/html/groovy-jdk/java/util/List.html (encontrar grep)
Esto parece un duplicado de https://stackoverflow.com/a/27998063/487033 – doelleri
Es curioso que nadie Preguntó cómo los nulos terminaron en la lista en primer lugar. Parece que podría estar abordando el síntoma en lugar del problema. – Snekse