Supprimer les éléments null d’une liste dans Groovy

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 }