"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > هل هناك اختلاف في الأداء بين استخدام حلقة EACH وتكرار لجمع اجتماعي في Java؟

هل هناك اختلاف في الأداء بين استخدام حلقة EACH وتكرار لجمع اجتماعي في Java؟

نشر في 2025-03-09
تصفح:114

Is There a Performance Difference Between Using a For-Each Loop and an Iterator for Collection Traversal in Java?

تستكشف هذه المقالة اختلافات الكفاءة بين هذين النهجين. يستخدم ITerator داخليًا:

قائمة a = new ArrayList () ؛ ل (عدد صحيح عدد صحيح: أ) { integer.toString () ؛ } يسمح بالتحكم المخصص في عملية اجتياز. لـ (iterator iterator = a.iterator () ؛ iterator.hasnext () ؛) { integer integer = iterator.next () ؛ integer.toString () ؛ }

مقارنة الكفاءة

للوصول البسيط للقراءة فقط إلى مجموعة ، لا يوجد أي فرق في الأداء بين الحلقة المناسبة ونهج التكرار. تستخدم الحلقة من أجل each داخليًا آلية التكرار. كائن o = list.get (i) ؛ }

يمكن أن يكون نهج التكرار (كلاهما حلقة EACH والتكرار الصريح) أكثر فعالية بشكل ملحوظ بالنسبة لبعض هياكل البيانات. على سبيل المثال ، في قائمة مرتبطة ، Get (i) هي عملية o (n). باستخدام عملية التكرار O (1) Next () يضمن تشغيل الحلقة في وقت O (n) ، في حين أن GET (i) ستعمل في O (n bytecode لكلا النهجين:

for-each loop

List a = new ArrayList();
for (Integer integer : a) {
  integer.toString();
}

aload 1 invokeInterface Java/util/list.iterator () ljava/util/iterator ؛ أستور 3 ...

iterator

List a = new ArrayList();
for (Iterator iterator = a.iterator(); iterator.hasNext();) {
   Integer integer = iterator.next();
   integer.toString();
}

aload 1 invokeInterface Java/util/list.iterator () ljava/util/iterator ؛ أستور 2 ... كما يمكنك مراقبة ، فإن رمز bytecode الذي تم إنشاؤه متطابق ، مما يشير إلى عدم عقوبة الأداء في استخدام أي منهج. يوفر التكرار مزايا فقط عند العمل مع هياكل بيانات محددة أو يتطلب سلوك تكرار مخصص. من أجل البساطة وقابلية القراءة ، تكون الحلقة الخاصة بـ EAC هي الخيار المفضل عمومًا.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3