¿Cómo comprobar si el elemento está en una matriz/hash/colección/lista maravillosa?
Pregunta
¿Cómo puedo saber si una matriz contiene un elemento?Pensé que podría haber algo como [1, 2, 3].includes(1)
que se evaluaría como true
.
Solución
.contains() es el mejor método para listas, pero para mapas necesitarás usar .containsKey() o .containsValue()
[a:1,b:2,c:3].containsValue(3)
[a:1,b:2,c:3].containsKey('a')
Otros consejos
Un poco de azúcar de sintaxis
1 in [1,2,3]
Para listas, utilice contains
:
[1,2,3].contains(1) == true
Si realmente desea que su método incluye en un ArrayList, simplemente agréguelo:
ArrayList.metaClass.includes = { i -> i in delegate }
IMPORTANTE Te pillé por usar .contains() en una colección de objetos, como dominios.Si la declaración de Dominio contiene un EqualsAndHashCode, o alguna otra implementación igual () para determinar si esos Ojbects son iguales, y lo ha configurado así...
import groovy.transform.EqualsAndHashCode
@EqualsAndHashCode(includes = "settingNameId, value")
luego .contains(myObjectToCompareTo) evaluará los datos en myObjectToCompareTo con los datos de cada instancia de Objeto en la Colección.Por lo tanto, si su método de igualdad no está a la altura, como no lo fue el mío, es posible que vea resultados inesperados.
def fruitBag = ["orange","banana","coconut"]
def fruit = fruitBag.collect{item -> item.contains('n')}
Lo hice así para que funcione si alguien lo está buscando.