Как проверить, есть ли элемент в массиве groovy /hash /collection /list?

Как мне узнать, содержит ли массив элемент? Я думал, что может быть что-то вроде [1, 2, 3].includes(1), которое будет оцениваться как true

109 голосов | спросил banderson623 9 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 09 Sep 2008 17:47:51 +0400 2008, 17:47:51

6 ответов


0

.contains () - лучший метод для списков, но для карт вам нужно будет использовать .containsKey () или .containsValue ()

[a:1,b:2,c:3].containsValue(3)
[a:1,b:2,c:3].containsKey('a')
ответил shemnon 16 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 16 Sep 2008 00:44:19 +0400 2008, 00:44:19
0

Некоторый синтаксис сахара

1 in [1,2,3]
ответил dahernan 15 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 15 Sep 2008 14:09:55 +0400 2008, 14:09:55
0

Для списков используйте contains:

[1,2,3].contains(1) == true
ответил banderson623 9 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 09 Sep 2008 17:58:24 +0400 2008, 17:58:24
0

Если вы действительно хотите, чтобы ваш метод include был включен в ArrayList, просто добавьте его:

ArrayList.metaClass.includes = { i -> i in delegate }
ответил John Flinchbaugh 2 +04002008-10-02T22:35:56+04:00312008bEurope/MoscowThu, 02 Oct 2008 22:35:56 +0400 2008, 22:35:56
0

ВАЖНО! Принято за использование .contains () для Коллекции объектов, такой как Домены. Если объявление Domain содержит EqualsAndHashCode или какую-либо другую реализацию equals (), чтобы определить, равны ли эти Ojbects, и вы установили его следующим образом ...

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

, тогда .contains (myObjectToCompareTo) оценит данные в myObjectToCompareTo с данными для каждого экземпляра объекта в коллекции. Таким образом, если ваш метод equals не подходит, как мой, это не так, вы можете увидеть неожиданные результаты.

ответил Twelve24 31 WedEurope/Moscow2014-12-31T21:20:33+03:00Europe/Moscow12bEurope/MoscowWed, 31 Dec 2014 21:20:33 +0300 2014, 21:20:33
0
def fruitBag = ["orange","banana","coconut"]
def fruit = fruitBag.collect{item -> item.contains('n')}

Я сделал это так, чтобы это работало, если кто-то ищет это.

ответил HinataXV 8 +03002016-10-08T19:41:53+03:00312016bEurope/MoscowSat, 08 Oct 2016 19:41:53 +0300 2016, 19:41:53

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132