Como verificar se o elemento está em uma matriz/hash/coleção/lista bacana?

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

  •  09-06-2019
  •  | 
  •  

Pergunta

Como posso descobrir se um array contém um elemento?Eu pensei que poderia haver algo como [1, 2, 3].includes(1) que avaliaria como true.

Foi útil?

Solução

.contains() é o melhor método para listas, mas para mapas você precisará usar .containsKey() ou .containsValue()

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

Outras dicas

Um pouco de açúcar de sintaxe

1 in [1,2,3]

Para listas, use contains:

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

Se você realmente deseja seu método include em um ArrayList, basta adicioná-lo:

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

IMPORTANTE Peguei por usar .contains() em uma coleção de objetos, como domínios.Se a declaração de Domínio contém um EqualsAndHashCode, ou alguma outra implementação equals() para determinar se esses Ojbects são iguais, e você definiu assim...

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

então .contains(myObjectToCompareTo) avaliará os dados em myObjectToCompareTo com os dados de cada instância de objeto na coleção.Portanto, se o seu método equals não for adequado, como o meu não foi, você poderá ver resultados inesperados.

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

Eu fiz assim para que funcione se alguém estiver procurando.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top