Comment vérifier si un élément est dans un tableau/hash/collection/liste groovy ?

StackOverflow https://stackoverflow.com/questions/51927

  •  09-06-2019
  •  | 
  •  

Question

Comment savoir si un tableau contient un élément ?Je pensais qu'il pourrait y avoir quelque chose comme [1, 2, 3].includes(1) qui serait évalué comme true.

Était-ce utile?

La solution

.contains() est la meilleure méthode pour les listes, mais pour les cartes, vous devrez utiliser .containsKey() ou .containsValue()

[a:1,b:2,c:3].containsValue(3)
[a:1,b:2,c:3].containsKey('a')

Autres conseils

Un peu de sucre de syntaxe

1 in [1,2,3]

Pour les listes, utilisez contains:

[1,2,3].contains(1) == true

Si vous voulez vraiment votre méthode include sur une ArrayList, ajoutez-la simplement :

ArrayList.metaClass.includes = { i -> i in delegate }

IMPORTANT Gotcha pour l'utilisation de .contains() sur une collection d'objets, tels que des domaines.Si la déclaration de domaine contient un EqualsAndHashCode, ou une autre implémentation d'equals() pour déterminer si ces Ojbects sont égaux, et que vous l'avez défini comme ceci...

import groovy.transform.EqualsAndHashCode
@EqualsAndHashCode(includes = "settingNameId, value")

alors le .contains(myObjectToCompareTo) évaluera les données de myObjectToCompareTo avec les données de chaque instance d'objet de la collection.Ainsi, si votre méthode d’égalité n’est pas à la hauteur, comme la mienne ne l’était pas, vous pourriez voir des résultats inattendus.

def fruitBag = ["orange","banana","coconut"]
def fruit = fruitBag.collect{item -> item.contains('n')}

Je l'ai fait comme ça donc ça marche si quelqu'un le cherche.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top