حلقه for جاوا — به زبان ساده
در این مقاله به بررسی یکی از جنبههای اساسی زبان جاوا یعنی اجرای یک گزاره یا گروهی از گزارهها به طور مکرر با استفاده از حلقه for جاوا میپردازیم.
حلقه for ساده
یک حلقه for به ساختاری کنترلی گفته میشود که امکان تکرار عملیات معینی را با افزایش و ارزیابی شمارنده حلقه فراهم میسازد. پیش از نخستین تکرار، شمارنده حلقه مقداردهی میشود، سپس ارزیابی شرط اجرا میشود و متعاقباً گام تعریف میشود (که معمولاً یک افزایش ساده است).
ساختار حلقه for به صورت زیر است:
1for (initialization; Boolean-expression; step)
2 statement;
به مثال ساده زیر توجه کنید:
1for (int i = 0; i < 5; i++) {
2 System.out.println("Simple for loop: i = " + i);
3}
مقداردهی، عبارت بولی و گام مورد استفاده در گزارههای حلقه for اختیاری هستند. در مثال زیر یک حلقه for بینهایت تعریف شده است:
1for ( ; ; ) {
2 // Infinite for loop
3}
حلقههای for برچسبدار
امکان تعریف حلقههای for برچسبدار (labeled) نیز وجود دارد. این حلقهها در مواردی مفید هستند که حلقههای for تودرتو داشته باشیم، چون میتوانیم از حلقه for خاصی خارج شویم و یا از حلقه دیگری کار را ادامه دهیم:
1aa: for (int i = 1; i <= 3; i++) {
2 if (i == 1)
3 continue;
4 bb: for (int j = 1; j <= 3; j++) {
5 if (i == 2 && j == 2) {
6 break aa;
7 }
8 System.out.println(i + " " + j);
9 }
10}
حلقه for بهبود یافته
از جاوا نسخه 5 به بعد، نوع ثانویهای از حلقه for داریم که به نام حلقه for بهبود یافته (enhanced) نامیده میشود. این نوع حلقه for امکان تکرار روی همه عناصر در یک آرایه یا یک کلکسیون را سادهتر میسازد.
ساختار حلقه for بهبودیافته به صورت زیر است:
1for(Type item : items)
2 statement;
از آنجا که این حلقه در مقایسه با حلقه for استاندارد سادهتر شده است، باید تنها دو مقدار را در زمان مقداردهی حلقه تعریف کنیم:
- دستگیرهای برای یک عنصر که در حال تکرار روی آن هستیم.
- آرایه/کلکسیون مبدأ که روی آن تکرار میکنیم.
از این رو میتوانیم بگوییم که: برای هر عنصر در Items، عنصر را به متغیر item انتساب میدهیم و بدنه حلقه را اجرا میکنیم.
به مثال ساده زیر توجه کنید:
1int[] intArr = { 0,1,2,3,4 };
2for (int num : intArr) {
3 System.out.println("Enhanced for-each loop: i = " + num);
4}
از حلقه فوق میتوان برای تعریف تکرار روی ساختمانهای داده مختلف در جاوا استفاده کرد. با فرض وجود شیء List<String> list میتوانیم روی آن تکرار کنیم:
1for (String item : list) {
2 System.out.println(item);
3}
همچنین میتوانید به سادگی روی یک مجموعه <Set<String تکرار کنید:
1for (String item : set) {
2 System.out.println(item);
3}
و با فرض وجود یک map مانند <Map<String,Integer به صورت زیر عمل میکنیم:
1for (Entry<String, Integer> entry : map.entrySet()) {
2 System.out.println(
3 "Key: " + entry.getKey() +
4 " - " +
5 "Value: " + entry.getValue());
6}
()Iterable.forEach
از جاوا نسخه 8 به بعد میتوانیم از حلقههای for-each به روشی نسبتاً متفاوت استفاده کنیم. اکنون یک متد ()forEach در اینترفیس Iterable داریم که یک عبارت لامبدا میپذیرد که نمایشدهنده عملی است که میتوانیم اجرا کنیم. در واقع در این روش، کار را به صورت داخلی با حلقه استاندارد اجرا میکنیم:
1default void forEach(Consumer<? super T> action) {
2 Objects.requireNonNull(action);
3 for (T t : this) {
4 action.accept(t);
5 }
6}
به مثال زیر توجه کنید:
1List<String> names = new ArrayList<>();
2names.add("Larry");
3names.add("Steve");
4names.add("James");
5names.add("Conan");
6names.add("Ellen");
7
8names.forEach(name -> System.out.println(name));
سخن پایانی
در این مقاله به بررسی حلقه for جاوا پرداختیم. کد کامل موارد مطرحشده در این مقاله را میتوانید در این ریپوی گیتهاب (+) ببینید.
اگر این مطلب برای شما مفید بوده است، آموزشهای زیر را نیز به شما پیشنهاد میکنیم:
- مجموعه آموزشهای جاوا (Java)
- مجموعه آموزشهای برنامهنویسی
- آموزش برنامهنویسی جاوا
- متدهای جاوا — به زبان ساده
- زبان برنامه نویسی جاوا (Java) — از صفر تا صد
==