Quelle est la meilleure façon de supprimer les éléments null d’une liste dans Groovy?
ex: [null, 30, null]
veux revenir: [30]
voici une réponse si vous ne voulez pas conserver la liste originale
void testRemove() { def list = [null, 30, null] list.removeAll([null]) assertEquals 1, list.size() assertEquals 30, list.get(0) }
dans un test pratique d’unité de dandy
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 trouverez que c’est le plus court, en supposant que vous ne vous souciez pas d’autres valeurs “fausses” qui disparaissent également:
println([null, 30, null].findAll())
public collection findAll () Trouve les éléments correspondant à la fermeture IDENTITY (c.-à-d. correspondant à la vérité Groovy). Exemple:
def items = [1, 2, 0, false, true, ”, ‘foo’, [], [4, 5], null] assert items.findAll () == , [4, 5]]
Cela 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]
Simplement [null].findAll{null != it}
si it
est nulle, alors elle renvoie false pour qu’elle n’existe pas dans la nouvelle collection.
Une autre façon de le faire est [null, 20, null].findResults{it}
.
Cela permet de supprimer tous les éléments nuls.
myList.removeAll { !it }
Si le numéro 0 est dans votre domaine, vous pouvez vérifier avec null
myList.removeAll { it == null }