در جاوا ، شکل دیگری برای حلقه (علاوه بر حلقه استاندارد for ) برای کار با آرایه ها و مجموعه ها وجود دارد.
اگر در حال کار با آرایه ها و مجموعه ها هستید ، می توانید از ساختار دیگر حلقه for (فرم پیشرفته ی حلقه for ) برای تکرار آیتم های آن ها استفاده کنید. این نوع حلقه for-each نامیده می شود زیرا حلقه از طریق هر عنصر آرایه / مجموعه تکرار می شود.
در اینجا مثالی برای تکرار عناصر یک آرایه با استفاده از حلقه استاندارد for آورده شده است:
class ForLoop {
public static void main(String[] args) {
char[] vowels = {‘a’, ‘e’, ‘i’, ‘o’, ‘u’};
for (int i = 0; i < vowels.length; ++ i) {
System.out.println(vowels[i]);
}
}
}
می توانید کد بالا را با استفاده از حلقه for-each هم بنویسید:
class AssignmentOperator {
public static void main(String[] args) {
char[] vowels = {‘a’, ‘e’, ‘i’, ‘o’, ‘u’};
// foreach loop
for (char item: vowels) {
System.out.println(item);
}
}
}
خروجی هر دو کد شبیه و برابر است با:
- a
- e
- i
- o
- u
استفاده از حلقه for پیشرفته برای نوشتن آسان تر است و باعث می شود کد خوانا تر باشد. از این رو معمولا بیش از فرم استاندارد توصیه می شود.
ساختار حلقه ی for-each
در ابتدا به ساختار حلقه for-each نگاه کنیم:
for(data_type item : collection) {
…
}
در ساختار بالا ،
- collection یک مجموعه یا آرایه ای است که قصد نوشتن حلقه بر روی آن را دارید.
- item یک عنصر واحد از collection است.
حلقه ی for-each چگونه کار می کند؟
در اینجا چگونگی عملکرد حلقه for-each آورده شده است.
- تکرار از طریق هر عنصر در آرایه یا مجموعه داده شده (collection) ،
- هر مورد را در یک متغیر (item) ذخیره می کند.
- و بدنه ی حلقه را اجرا می کند.
مثال: حلقه ی for-each
برنامه زیر مجموع تمام عناصر یک آرایه اعداد صحیح را محاسبه می کند.
class EnhancedForLoop {
public static void main(String[] args) {
int[] numbers = {3, 4, 5, -5, 0, 12};
int sum = 0;
for (int number: numbers) {
sum += number;
}
System.out.println(“Sum = ” + sum);
}
}
خروجی
Sum = 19
در برنامه بالا ، اجرای حلقه for-each به شرح زیر است:
تکرار حلقه for-each را مشاهده می کنید
- همه ی عناصر numbers تکرار می شوند.
- هر عنصر در متغیر number ذخیره می شود.
- بدنه حلقه اجرا می شود ، یعنی number به sum اضافه می شود.