2013-01-23 9 views
15

मैं सोच रहा था कि इसके लिए कोई तरीका है और Array को उस विधि में पास करना या हर बार लिखना है कि मैं यह जांचना चाहता हूं कि कोई संख्या array में है या नहीं।सरणी के माध्यम से इटरेटिंग - जावा

उदाहरण के लिए:

public static boolean inArray(int[] array, int check) { 
    for (int i = 0; i < array.length; i++){ 
     if (array[i] == check) 
      return true; 
      } 
    return false; 
} 

अग्रिम में मदद के लिए धन्यवाद!

उत्तर

7

आप निश्चित रूप से एक विधि में इस तर्क को संपुटित चाहिए।

समान कोड को कई बार दोहराने का कोई फायदा नहीं है।

इसके अलावा, यदि आप किसी विधि में तर्क डालते हैं और यह बदलता है, तो आपको केवल एक ही स्थान पर अपना कोड संशोधित करने की आवश्यकता होती है।

चाहे आप किसी तृतीय पक्ष लाइब्रेरी का उपयोग करना चाहते हों या नहीं, एक पूरी तरह से अलग निर्णय है।

6

यदि आप एक सरणी (और पूरी तरह से एक सरणी) का उपयोग कर रहे हैं, तो "शामिल" का लुकअप O(N) है, क्योंकि सबसे खराब मामला, आपको संपूर्ण सरणी को फिर से चालू करना होगा। अब यदि सरणी सॉर्ट की गई है तो आप एक बाइनरी खोज का उपयोग कर सकते हैं, जो खोज समय को log(N) पर ओवरहेड के साथ कम कर देता है।

यह कुछ ऐसा है बार-बार शुरू हो जाती है है, तो यह एक समारोह में जगह:

private boolean inArray(int[] array, int value) 
{ 
    for (int i = 0; i < array.length; i++) 
    { 
     if (array[i] == value) 
     { 
      return true; 
     } 
    } 
    return false; 
} 
+2

मूल पोस्ट में फ़ंक्शन कितना अलग है? साथ ही, व्यक्तिगत अनुरोध के रूप में, भाषा सीखने वाले लोगों के लिए ब्रेसिज़ बहुत अच्छी बात है। – JustinKSU

+0

@JustinKSU +1 _always_ को बयानों का उपयोग करने के लिए अगर बयानों और लूप के लिए उपयोग करने के लिए सुझाव देता है। और हाँ, उपर्युक्त कोड ओपीएस कोड के समान है। – jahroy

+1

@ जस्टिनकेएसयू ने ओपी के पोस्ट की प्रतिलिपि बनाई/चिपकाया (यही कारण है कि कोई ब्रेसिज़ नहीं था)। समारोह को वही जोड़ा गया क्योंकि इसमें कोई बदलाव नहीं था और यह ओपी के दो भाग प्रश्नों का उत्तर देने के लिए काम करता था। – Woot4Moo

5

आप lib org.apache.commons.lang.ArrayUtils

आयात कर सकते हैं वहाँ एक स्थिर तरीका है, जहां है आप एक int सरणी और जांच के लिए एक मूल्य में गुजर सकते हैं।

में (int [] सरणी, int valueToFind) चेक करता है कि मान दिए गए सरणी में है या नहीं।

ArrayUtils.contains(intArray, valueToFind); 

ArrayUtils API

32

कम से कम जावा 1.5.0 (जावा 5) कोड को थोड़ा साफ किया जा सकता है। Array और कुछ भी है कि लागू करता Iterator (जैसे Collection रों) जैसे लूप में चलाए जा सकते हैं:

public static boolean inArray(int[] array, int check) { 
    for (int o : array){ 
     if (o == check) { 
     return true; 
     } 
    } 
    return false; 
} 

जावा 8 में आप भी कुछ ऐसा कर सकते हैं: हालांकि एक धारा को बदलने यह है के लिए

public static boolean inArray(int[] array, int check) { 
    return Arrays.asList(array).anyMatch(x -> x == check); 
} 

शायद overkill।

संबंधित मुद्दे