¿Cómo comprobar si el elemento está en una matriz/hash/colección/lista maravillosa?

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

  •  09-06-2019
  •  | 
  •  

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.

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top