For-Each Loop
📖توضیحات درس
📄جزوه
مفاهیم کلیدی
-
For-each Loop (Enhanced For Loop) یک ساختار کنترلی در جاوا (معرفی شده در Java 5) که راه سادهتری برای پیمایش (Iterate) عناصر آرایهها و کالکشنها (مانند List و Set) فراهم میکند.
-
Traverse به معنای پیمایش یا عبور از تکتک عناصر یک ساختار داده (مانند آرایه) از ابتدا تا انتها است.
-
Collection چارچوبی در جاوا که مجموعهای از اشیاء را در خود ذخیره میکند؛ مانند
ListوSetکه حلقهfor-eachبه خوبی با آنها کار میکند. -
Infinite Loop حلقهای که شرط پایان آن هیچگاه برقرار نمیشود و برنامه در آن گیر میکند؛ یکی از خطرات استفاده نادرست از حلقه
forمعمولی. -
Index شماره جایگاه هر عنصر در آرایه که در حلقه
for-eachمستقیماً با آن سر و کار نداریم، اما در حلقههای قدیمی برای دسترسی به عناصر الزامی است.
موارد مصاحبه ای
-
تفاوت اصلی حلقه
forمعمولی وfor-eachدر چیست؟ حلقهforمعمولی دارای سه بخش (Initial value، Condition، Step) است و با ایندکس کار میکند، اماfor-eachمستقیماً به مقدار خودِ المنت دسترسی دارد و سینتکس بسیار سادهتری دارد. -
مزایای استفاده از
for-eachنسبت به حلقههای قدیمی چیست؟ کدنویسی کوتاهتر و خواناتر (Concise code)، حذف احتمال خطایArrayIndexOutOfBoundsExceptionو جلوگیری از ایجاد حلقههای بینهایت (Infinite Loops). -
چه زمانی نباید از حلقه
for-eachاستفاده کرد؟ زمانی که به ایندکس عناصر نیاز داریم، زمانی که میخواهیم عناصر را یکیدرمیان یا با گامهای خاص بپیماییم، یا زمانی که قصد داریم آرایه را از انتها به ابتدا پیمایش کنیم. -
آیا حلقه
for-eachاز نظر پرفورمنس با حلقه معمولی برابر است؟ حلقهfor-eachمقدار بسیار کمی Overhead (بار اضافی) دارد که در آرایهها یا کالکشنهای بسیار بزرگ و حساس به زمان، ممکن است تفاوت ناچیزی در کارایی ایجاد کند. -
آیا در حلقه
for-eachامکان تغییر ساختار کالکشن وجود دارد؟ خیر، در حین پیمایش باfor-eachنمیتوان به راحتی عناصر را حذف یا اصلاح کرد و اگر به ایندکس برای دسترسی مستقیم نیاز باشد، باید از حلقه معمولی استفاده کرد.
سناریو کاربردی
در این آموزش، یک آرایه از اعداد صحیح (int[] numbers) تعریف شده است. برای چاپ کردن این اعداد، ابتدا از حلقه for قدیمی استفاده شد که نیاز به تعریف متغیر i و کنترل طول آرایه داشت. سپس همین عملیات با for-each انجام شد. در این روش، ساختار به این شکل است: for (int n : numbers). در اینجا جاوا به صورت خودکار در هر مرحله، یکی از اعضای آرایه را برداشته و در متغیر n قرار میدهد تا بتوانیم عملیاتی مثل چاپ کردن یا محاسبات (مثلاً n + 2) را روی آن انجام دهیم، بدون اینکه نگران ایندکس یا تعداد تکرارها باشیم.
بیشتر بدانید
-
IDE Tip در محیط IntelliJ IDEA، اگر یک حلقه
forمعمولی بنویسید، خودِ IDE با یک Warning به شما پیشنهاد میدهد که آن را به صورت خودکار بهEnhanced for loopتبدیل کنید. -
Code Cleanliness استفاده از
for-eachباعث میشود کد شما تمیزتر شده و مدیریت آن (Maintenance) بسیار سادهتر شود، زیرا پیچیدگیهای مربوط به مدیریت شمارنده (Counter) حذف میشود. -
ساختار سینتکس برای نوشتن راحتتر این حلقه، همیشه ابتدا نام آرایه یا کالکشن را بعد از علامت دو نقطه (
:) بنویسید و سپس در سمت چپ، نوع دادهای که از آن خارج میشود را مشخص کنید.
