Wie überprüfe ich, ob ein Element in groovy array/hash/collection/list vorhanden ist?

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

  •  09-06-2019
  •  | 
  •  

Frage

Wie finde ich heraus, ob ein Array ein Element enthält?Ich dachte, es könnte so etwas geben [1, 2, 3].includes(1) was als bewerten würde true.

War es hilfreich?

Lösung

.contains() ist die beste Methode für Listen, aber für Karten müssen Sie .containsKey() oder .containsValue() verwenden

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

Andere Tipps

Etwas Syntaxzucker

1 in [1,2,3]

Für Listen verwenden Sie contains:

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

Wenn Sie Ihre Includes-Methode wirklich auf einer ArrayList haben möchten, fügen Sie sie einfach hinzu:

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

WICHTIG Gotcha für die Verwendung von .contains() für eine Sammlung von Objekten, wie z. B. Domänen.Wenn die Domain-Deklaration einen EqualsAndHashCode oder eine andere equal()-Implementierung enthält, um festzustellen, ob diese Ojbects gleich sind, und Sie es so festgelegt haben ...

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

dann wertet .contains(myObjectToCompareTo) die Daten in myObjectToCompareTo mit den Daten für jede Objektinstanz in der Sammlung aus.Wenn also Ihre Methode „equals“ nicht auf dem neuesten Stand ist, was bei meiner nicht der Fall war, werden Sie möglicherweise unerwartete Ergebnisse sehen.

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

Ich habe es so gemacht, damit es funktioniert, wenn jemand danach sucht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top