كيفية التحقق مما إذا كان العنصر في مجموعة رائعة/تجزئة/مجموعة/قائمة؟

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() على مجموعة من الكائنات، مثل المجالات.إذا كان إعلان المجال يحتوي على EqualsAndHashCode، أو أي تطبيق يساوي () آخر لتحديد ما إذا كانت تلك Ojbects متساوية، وقمت بتعيينها على هذا النحو...

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

بعد ذلك سيقوم .contains(myObjectToCompareTo) بتقييم البيانات الموجودة في myObjectToCompareTo مع البيانات الخاصة بكل مثيل كائن في المجموعة.لذا، إذا لم تكن طريقة التساوي الخاصة بك على مستوى المطلوب، كما لم تكن طريقتي، فقد ترى نتائج غير متوقعة.

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

لقد فعلت ذلك بهذه الطريقة حتى يعمل إذا كان هناك من يبحث عنه.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top