Bài 22. Hướng Dẫn Sử Dụng Vòng Lặp For-Each Trong Java | Tự Học Java Căn Bản

Published on
Thuộc danh mục: Học Java Căn Bản|Đăng bởi: Lê Thanh Giang||5 min read
Facebook share iconLinkedIn share iconTwitter share iconPinterest share iconTumblr share icon
Bài 22. Cách Sử Dụng Vòng Lặp For-Each Trong Java | Tự Học Java Căn Bản

Vòng lặp for-each trong Java là một cách giúp bạn duyệt qua các phần tử trong mảng hoặc danh sách mà không cần quan tâm đến chỉ mục. Đây là một cách viết ngắn gọn, giúp mã nguồn trở nên dễ đọc và tránh lỗi so với vòng lặp for thông thường.

Trong bài viết này, chúng ta sẽ tìm hiểu cú pháp, cách hoạt động, ưu điểm, nhược điểm và các ví dụ minh họa về vòng lặp for-each trong Java.

Vòng Lặp For-Each Là Gì?

Vòng lặp for-each (hay còn gọi là enhanced for loop) là một kiểu vòng lặp đặc biệt trong Java, dùng để duyệt qua từng phần tử trong một mảng (array) hoặc một tập hợp (Collection).

Điểm khác biệt chính so với vòng lặp for truyền thống:

  • Không cần biết kích thước mảng hoặc danh sách.
  • Không cần sử dụng biến đếm (i).
  • Cú pháp đơn giản, dễ hiểu.

Cú Pháp Của Vòng Lặp For-Each Trong Java

Cú pháp của vòng lặp for-each như sau:

for (Kiểu_dữ_liệu biến_tạm : tập_hợp) {
    // Khối lệnh xử lý từng phần tử
}

Giải thích:

  • Kiểu_dữ_liệu là kiểu của phần tử trong tập hợp.
  • biến_tạm là biến dùng để lưu từng phần tử trong quá trình duyệt.
  • tập_hợp là mảng hoặc danh sách mà bạn muốn duyệt qua.

Ví Dụ Về Vòng Lặp For-Each

Duyệt Mảng Số Nguyên

public class ForEachExample {
    public static void main(String[] args) {
        int[] numbers = {1, 2, 3, 4, 5};

        for (int num : numbers) {
            System.out.println("Giá trị: " + num);
        }
    }
}

Kết quả:

Giá trị: 1
Giá trị: 2
Giá trị: 3
Giá trị: 4
Giá trị: 5

Duyệt Mảng Chuỗi

public class ForEachExample {
    public static void main(String[] args) {
        String[] names = {"Hà", "Nam", "Lan", "Tùng"};

        for (String name : names) {
            System.out.println("Tên: " + name);
        }
    }
}

Kết quả:

Tên: Hà
Tên: Nam
Tên: Lan
Tên: Tùng

Duyệt Danh Sách (ArrayList)

import java.util.ArrayList;

public class ForEachExample {
    public static void main(String[] args) {
        ArrayList<String> colors = new ArrayList<>();
        colors.add("Đỏ");
        colors.add("Xanh");
        colors.add("Vàng");

        for (String color : colors) {
            System.out.println("Màu: " + color);
        }
    }
}

Kết quả:

Màu: Đỏ
Màu: Xanh
Màu: Vàng

So Sánh Vòng Lặp For-Each Và Vòng Lặp For Thông Thường

Tiêu chíVòng lặp for-eachVòng lặp for thông thường
Cách duyệtTự động duyệt qua từng phần tử

Duyệt bằng chỉ mục (i)

Độ dài mã nguồnNgắn gọn, dễ đọcDài hơn, phức tạp hơn
Áp dụng choMảng, danh sáchMảng, danh sách, chuỗi
Có thể thay đổi phần tử❌ Không✅ Có
Truy cập chỉ mục❌ Không✅ Có

Khi nào dùng for-each?

  • Khi chỉ cần duyệt qua từng phần tử mà không cần biết chỉ mục.
  • Khi không cần thay đổi giá trị của phần tử trong danh sách.

Khi nào dùng for thường?

  • Khi cần biết chỉ mục của phần tử.
  • Khi cần thay đổi giá trị phần tử trong mảng hoặc danh sách.

Nhược Điểm Của Vòng Lặp For-Each

Mặc dù for-each có nhiều ưu điểm, nhưng nó cũng có một số hạn chế:

  1. Không thể thay đổi phần tử trong danh sách

    • Khi sử dụng vòng lặp for-each, bạn không thể thay đổi giá trị của phần tử bên trong danh sách.

    Ví dụ lỗi:

    int[] numbers = {1, 2, 3, 4, 5};
    
    for (int num : numbers) {
        num = num * 2; // Thay đổi này KHÔNG có tác dụng với mảng gốc
    }
    
    for (int num : numbers) {
        System.out.println(num); // Giá trị không thay đổi
    }
    
  2. Không thể duyệt ngược

    • Vòng lặp for-each luôn duyệt từ đầu đến cuối, không thể duyệt ngược.

    ✅ Nếu muốn duyệt ngược, hãy dùng vòng lặp for thông thường:

    for (int i = numbers.length - 1; i >= 0; i--) {
        System.out.println(numbers[i]);
    }
    
  3. Không thể bỏ qua phần tử hoặc duyệt có điều kiện

    • Vòng lặp for-each duyệt tất cả phần tử, không thể bỏ qua phần tử nào theo điều kiện.
    • Nếu cần bỏ qua phần tử, nên dùng vòng lặp for hoặc while.

Tổng Kết

Vòng lặp for-each giúp mã nguồn gọn gàng hơn, nhưng không phải lúc nào cũng phù hợp. Khi cần thay đổi giá trị hoặc kiểm soát chỉ mục, bạn nên dùng vòng lặp for truyền thống.

Bài tiếp theo: Bài 23. Cách sử dụng vòng lặp while trong lập trình Java

Bài viết mới nhất

Bài viết liên quan

Newsletter border

Đăng ký để nhận tin từ RiverLee