그루비 배열/해시/컬렉션/목록에 요소가 있는지 확인하는 방법은 무엇입니까?

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

  •  09-06-2019
  •  | 
  •  

문제

배열에 요소가 포함되어 있는지 어떻게 알 수 있나요?같은 게 있을 줄 알았는데 [1, 2, 3].includes(1) 이는 다음과 같이 평가됩니다. true.

도움이 되었습니까?

해결책

.contains()는 목록에 가장 적합한 방법이지만 지도의 경우 .containsKey() 또는 .containsValue()를 사용해야 합니다.

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

다른 팁

일부 구문 설탕

1 in [1,2,3]

목록의 경우 contains:

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

ArrayList에 포함 메소드를 정말로 원한다면 추가하면 됩니다:

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

도메인과 같은 객체 컬렉션에 .contains()를 사용하는 것이 중요합니다.Domain 선언에 EqualsAndHashCode 또는 해당 Ojbect가 동일한지 확인하기 위한 다른 equals() 구현이 포함되어 있고 다음과 같이 설정한 경우...

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

그런 다음 .contains(myObjectToCompareTo)는 컬렉션의 각 Object 인스턴스에 대한 데이터를 사용하여 myObjectToCompareTo의 데이터를 평가합니다.따라서 내 것과 마찬가지로 당신의 equals 메소드가 만족스럽지 않다면 예상치 못한 결과가 나타날 수도 있습니다.

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

이렇게 해서 누군가가 찾고 있으면 효과가 있을 것 같아요.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top