Quelle est la meilleure façon de supprimer des éléments nuls d'une liste dans Groovy?
ex: [null, 30, null]
veux retourner: [30]
voici une réponse si vous ne souhaitez pas conserver la liste d'origine
void testRemove() {
def list = [null, 30, null]
list.removeAll([null])
assertEquals 1, list.size()
assertEquals 30, list.get(0)
}
dans un test unitaire dandy pratique
Utilisez simplement moins:
[null, 30, null] - null
La méthode findAll devrait faire ce dont vous avez besoin.
[null, 30, null].findAll {it != null}
Je pense que vous constaterez que c'est la plus courte, en supposant que cela ne vous dérange pas que d'autres "fausses" valeurs disparaissent également:
println([null, 30, null].findAll())
public collection findAll () Recherche les éléments correspondant à la fermeture IDENTITY (c'est-à-dire correspondant à Groovy vérité). Exemple:
def items = [1, 2, 0, false, true, '', 'foo', [], [4, 5], null] assert items.findAll () == [1, 2, true, 'foo' , [4, 5]]
Ceci peut également être réalisé par grep :
assert [null, 30, null].grep() == [30]
ou
assert [null, 30, null].grep {it} == [30]
ou
assert [null, 30, null].grep { it != null } == [30]
Cela effectue une suppression sur place de tous les éléments nuls.
myList.removeAll { !it }
Si le numéro 0 est dans votre domaine, vous pouvez vérifier contre null
myList.removeAll { it == null }
Tout simplement [null].findAll{null != it}
si it
est null alors il retourne false donc il n'existera pas dans la nouvelle collection.
Une autre façon de procéder est [null, 20, null].findResults{it}
.