مروان محمود3 نشر 10 سبتمبر 2021 أرسل تقرير نشر 10 سبتمبر 2021 هل يوجد دالةة جاهزة في لغة جافا للعثور على عنصر معين؟ 2 اقتباس
1 Wael Aljamal نشر 10 سبتمبر 2021 أرسل تقرير نشر 10 سبتمبر 2021 يمكن استخدام الصنف Class ArrayUtils والدالة indexOf والتي تعيد دليل العنصر int[] arr = new int{4, 1, 7, 6, 34}; int inde_2 = ArrayUtils.indexOf(arr, 2); لاحظ أن الدالة تأخذ المصفوفة كوسيط أول ثم قيمة العنصر الذي نبحث عنه كوسيط ثاني.. وتعيد -1 في حال لم يكن موجود، if ( inde_2 != -1 ) { System.out.println("number 2 is here") }else { System.out.println("not here") } إن كنت تريد عمل بحث سريع ضمن مصفوفة عددية كبيرة الحجم مثلا، أي لعدد كبير من العناصر وربما عدد كبير من الاستعلامات (عمليات البحث) يمكن استخدام دالة البحث الثنائي Arrays.sort(array); Arrays.binarySearch(array, value); ولكن تأكد من ترتريب المصفوفة قبل عمل البحث الثنائي. ولكي تستخدم طريقة بسيطة، بحث باستخدام الحلقة يمكن عمل التالي: public int find(int[] array, int value) { for(int i=0; i<array.length; i++) if(array[i] == value) return i; return -1; } هذه الدالة تكافئ عمل الدالة indexOf، إن كنت مهتماً فقط بالتحقق من وجد عنصر أو عدمه، حوّل الدالة لدالة منطقية boolean تعيد true بدل return i و fasle افتراضيا. اقتباس
0 Ali Haidar Ahmad نشر 11 سبتمبر 2021 أرسل تقرير نشر 11 سبتمبر 2021 يمكنك البحث عن العناصر ضمن المصفوفات باستخدام عدة طرق: أولاً من خلال خوارزمية ال Binary Search حيث يمكننا استخدام الدالة الجاهزة Arrays.binarySearch للقيام بعملية البحث عن عنصر ما داخل مصفوفة. الكود التالي هو تطبيق لكيفية استخدامها: import java.util.stream.IntStream; import java.util.Arrays; class check { // نعرف تابع لتغليف عملية البحث private static void checkit(int[] array, int value) { // نقوم بفرز المصفوفة Arrays.sort(array); // نستخدم خوارزمية البحث الثنائي لاختبار وجود العنصر ضمن المصفوفة int res = Arrays.binarySearch(arr, value); boolean bool = res > 0 ? true : false; //True في حالة كان موجود سيطبع System.out.println(bool); } // الآن سنستخدمه ضمن البرنامج الرئيسي public static void main(String[] args) { // نعرف مصفوفة int myarray[] = {1, 4, 9, 0}; // تحديد القيمة التي نريد البحث عنها int val = 4; // استخدام التابع checkit(arr, val); // True } } هذه الطريقة هي الأفضل والأكثر فعالية لأن تعقيدها هو الأقل. هناك طرق أخرى مثلاً استخدام List.contains أو خوارزمية البحث الخطي لكن هذه الطرق أقل كفاءة من هذه الطريقة، وبكافة الأحوال سأكتب لك التابعين التاليين إذا رغبت باستخدامهما. أولاً استخدام List.contains : private static void check(Integer[] arr, int val) { boolean bool = Arrays.asList(arr).contains(val); System.out.println(bool); } ثانياً البحث الخطي: private static void check(int[] arr, int val) { boolean b = false; for (int element : arr) { if (element == val) { test = true; break; } } System.out.println(b); } اقتباس
السؤال
مروان محمود3
هل يوجد دالةة جاهزة في لغة جافا للعثور على عنصر معين؟
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.