تحقق مما إذا كان العنصر موجودا في صفيف في Java

نريد التحقق من وجود قيمة في مصفوفة واسترداد موضعها إن أمكن. يمكنك اختيار إحدى الطرق الثلاث:
  • تصفح المصفوفة وقارن جميع المربعات بقيمة الإدخال وكليهما. < / li>
  • نمط < / span >< span = "عائلة الخط:" الطريقة ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >يحتوي على () < / span >< / li>
  • الطريقة  < / span > BinarySearch () < / span >< / li>< / ul >< h2>1) ابحث عن عنصر من خلال تصفح الصفيف
    في هذا المثال ، نقوم بإنشاء دالة exists() الذي يرجع موضع القيمة التي تبحث عنها إذا كان الصفيف موجودا ، وإلا فإنه يرجع -1 ويعرض رسالة تشير إلى أن الصفيف لا يحتوي على هذه القيمة.

    public class test {

    الفراغ العام الثابت الرئيسي (String[] args) {
    int T[]={1, 5, 2, 22, 14, 3, 18, 52, 40, 88, 73, 27};
    int valrech = 22 ؛
    int position = موجود (T ، valrech) ؛
    if (position!=-1)
    System.out.println (valrech +" في موضع "+ الموضع") ؛

    }

    ثابت int موجود (int T [] ، int val) {
    for (int i = 0 ؛ i< T. الطول. i++){
    if(val==T[i])
    //return current position
    return i;
    }
    System.out.println ("القيمة التي تبحث عنها غير موجودة");
    العودة -1 ؛
    }
    }
    < / pre>Output

    22 في موضع 3
    < / pre>< / div>
    تتم مقارنة السلاسل بطريقة equals< / b> () وليس "==". اقرأ المقالكيفية مقارنة سلسلتين في java.

    2) تحقق مما إذا كان العنصر موجودا في الصفيف

    تختبر هذه الطريقة فقط وجود العنصر. في هذا المثال، يمكن مقارنة التعليمة البرمجية التالية بين أنواع السلسلة وint. لتتمكن من استخدام نمط يحتوي على < / span> ، تحتاج إلى تحويل الصفيف بأكمله إلى صفيف سلسلة باستخدام نمط toString(T).

    import java.util.Arrays; 

    اختبار الفئة العامة {

    الفراغ العام الثابت الرئيسي (سلسلة [] args) {
    int T [] = {100,150,180,220,240} ؛
    System.out.println (يحتوي على (T ، "220")) ؛

    }

    يحتوي منطقي عام ثابت (int [] T ، سلسلة val) {
    إرجاع Arrays.toString (T) .contains (val) ؛
    }
    }
    < / pre> Output

    < pre class = "prettyprint lang-java" >true
    < / pre>لماذا يحتوي على () < / span> يدعم نوع السلسلة ولكن ليس النوع int؟ ببساطة لأن int هو نوع بدائي وتصبح السلسلة كائنا بعد إنشاء مثيل ويمكن استخدامها في يحتوي على (كائن o) < / span > والذي يبحث فقط عن الكائنات.

    يمكننا اقتراح حل تحويل int إلى كائن عدد صحيح بالطريقة Integer.valueOf(T[i])، وإلا يتم استخدام الكائن الصحيح من البداية. يوضح هذا الرمز الفرق بين الاثنين:

    < pre class = "prettyprint lang-java" >import java.util.Arrays ؛

    اختبار الطبقة العامة {

    الفراغ العام الثابت الرئيسي (سلسلة [] args) {
    int T[] = {10،14،28،201،280} ؛
    عدد صحيح[] T2 = {10,14,28,201,280};
    //array int
    System.out.println(Arrays.asList(T).contains(28));
    //array Integer
    System.out.println(Arrays.asList(T2).contains(28));
    } < br / >}
    < / pre> Output

    < pre class = "prettyprint lang-java" >false
    true
    < / pre>

    3) ابحث عن قيمة باستخدام طريقة البحث الثنائي

    هذه الطريقة عامة لأنها تقبل جميع الأنواع: عدد صحيح ، عائم ، حرف ، مزدوج ، منطقي ، قصير ، إلخ < / div>

    < pre class = "prettyprint lang-java" >import java.util.Arrays ؛

    اختبار الفئة العامة {
    الفراغ العام الثابت الرئيسي (سلسلة [] args) {
    int T[] = {'a','b','c','d','e','f'};
    System.out.println ("القيمة التي تبحث عنها هي في
    الموضع "+ Arrays.binarySearch (T، 'd'));
    }
    }
    < / pre> الإخراج:

    القيمة التي تبحث عنها موجودة في موضع 3