कैसे जाँच करें कि क्या तत्व groovy array / hash / collection / list में है?


127

यदि किसी सरणी में कोई तत्व है तो मैं कैसे पता लगाऊं? मैंने सोचा कि कुछ ऐसा हो सकता है, [1, 2, 3].includes(1)जिसका मूल्यांकन होगा true


क्या आप यह पता लगा सकते हैं कि सूची में यह समान तत्व कहाँ है?
अथर्व जौहरी

2
@ अथर्वजोहरीassert [12,42,33].indexOf(42) == 1
रिग्स

जवाबों:


138

.contains () सूचियों के लिए सबसे अच्छा तरीका है, लेकिन नक्शे के लिए आपको .containsKey () या .containsValue () का उपयोग करना होगा।

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

और, इसके अलावा, यह जांचने के लिए कि किसी मानचित्र में एक निश्चित कुंजी के तहत कुछ शून्य मान नहीं है, यह निम्न अभिव्यक्ति की जांच करने के लिए पर्याप्त है if(aMap["aKey"]==aValue)
नील मकसूदोव


55

सूचियों के लिए, उपयोग करें contains:

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

16
शायद आप कहना चाहते थे [1,2,3] .contains (1)। क्योंकि मैं अनुमान लगा रहा हूं कि फ़ंक्शन में पहले से ही एक बूलियन है। आप फिर से इसकी तुलना एक हार्डकॉड 'सच' से क्यों करना चाहते हैं।
हर्षाय बुरादकर ३०'१२

6
@HarshayBuradkar करने के लिए वास्तव में यह सुनिश्चित कर लें true == true#joke ज़ाहिर है,
Automatico

8

यदि आप वास्तव में अपनी पद्धति को एक ArrayList पर शामिल करना चाहते हैं, तो बस इसे जोड़ें:

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

3

डोमेन जैसे ऑब्जेक्ट के संग्रह पर .contains () का उपयोग करने के लिए महत्वपूर्ण गोत्चा। यदि डोमेन घोषणा में एक EqualsAndHashCode, या कुछ अन्य समान () कार्यान्वयन शामिल हैं, तो यह निर्धारित करने के लिए कि क्या ओजबेक समान हैं, और आपने इसे इस तरह सेट किया है ...

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

तब .contains (myObjectToCompareTo) संग्रह में प्रत्येक ऑब्जेक्ट उदाहरण के लिए डेटा के साथ myObjectToCompareTo में डेटा का मूल्यांकन करेगा। इसलिए, यदि आपकी बराबरी का तरीका सूंघना नहीं है, जैसा कि मेरा नहीं था, तो आप अप्रत्याशित परिणाम देख सकते हैं।


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

मैं इसे इस तरह से करता था इसलिए यह काम करता है अगर कोई इसे ढूंढ रहा है।



0

आप इस तरह से नियमित अभिव्यक्ति के साथ मैचों का उपयोग कर सकते हैं:

boolean bool = List.matches("(?i).*SOME STRING HERE.*")
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.