CodeGym/Blog Java/Ngẫu nhiên/Vòng lặp for-each trong Java

Vòng lặp for-each trong Java

Xuất bản trong nhóm

Vòng lặp cho mỗi vòng lặp là gì?

For -each là một loại vòng lặp for mà bạn sử dụng khi cần xử lý tất cả các phần tử của một mảng hoặc tập hợp. Điều đó nói rằng, cụm từ for-each không thực sự được sử dụng trong vòng lặp này. Cú pháp của nó như sau:
for (type itVar : array)
{
    // Operations
}
Trong đó type là kiểu của biến iterator (khớp với kiểu dữ liệu của các phần tử trong mảng!), itVar là tên của nó và mảng là một mảng (các cấu trúc dữ liệu khác cũng được cho phép, chẳng hạn như một số loại bộ sưu tập, như ArrayList ), tức là đối tượng mà vòng lặp được thực thi. Như bạn có thể thấy, cấu trúc này không sử dụng bộ đếm: biến iterator chỉ đơn giản là lặp qua các phần tử của mảng hoặc tập hợp. Khi một vòng lặp như vậy được thực thi, biến iterator được gán tuần tự giá trị của từng phần tử của mảng hoặc tập hợp, sau đó khối câu lệnh (hoặc câu lệnh) đã chỉ định được thực thi.

Ngoài vòng lặp for-each, Java còn có phương thức forEach(). Bạn có thể đọc về nó trong bài viết có tựa đề "Ngừng viết vòng lặp!" 10 phương pháp hay nhất để làm việc với các bộ sưu tập trong Java 8

Ghi chú:một vòng lặp for-each có thể được áp dụng cho các mảng và bất kỳ lớp nào triển khai giao diện java.lang.Iterable . Vòng lặp for sau đây sẽ tương đương với đoạn mã trên:
for (int i=0; i < array.length; i++)
{

    // Statements
}

Ví dụ về vòng lặp for-each

Chúng tôi tạo ra một mảng điểm số của sinh viên. Sau đó, chúng tôi sử dụng vòng lặp for-each để in ra tất cả các ước tính, tính điểm trung bình và tìm điểm cao nhất.
public class ForEachTest {

// A method that prints all scores
public static void printAllScores(int[] scores) {
        System.out.print("|");
        for (int num : scores) {

            System.out.print(num + "|");
        }
        System.out.println();
    }

// A method that displays the average score

public static double getAverageScore(int[] numbers) {
        int totalScore = 0;

        for (int num : numbers) {
            totalScore = num + totalScore;
        }
        return ((double) totalScore / numbers.length);

    }
// A method that determines the best (maximum) score
    public static int getBestScore(int[] numbers) {
        int maxScore = numbers[0];

        for (int num : numbers) {
            if (num > maxScore) {
                maxScore = num;
            }
        }
        return maxScore;
    }

public static void main(String[] args) {

// Array of scores
int[] scores = {5, 10, 7, 8, 9, 9, 10, 12};


  int bestScore = getBestScore(scores);
        System.out.print("All the scores: ");
        printAllScores(scores);
        System.out.println("The highest score is " + bestScore);
        System.out.println("The average score is " + getAverageScore(scores));
    }

}
Đầu ra chương trình:
All the scores: |5|10|7|8|9|9|10|12|
The highest score is 12
The average score is 8.75
Bây giờ, hãy xem phương pháp in tất cả điểm sẽ như thế nào nếu chúng ta sử dụng vòng lặp for thông thường :
public static void printAllScores(int[] scores) {
        System.out.print("|");
        for (int i = 0; i < scores.length; i++) {

            System.out.print(scores[i] + "|");
        }
        System.out.println();
    }
Nếu chúng ta gọi phương thức này từ phương thức chính , thì chúng ta sẽ nhận được kết quả này:
All the scores: |5|10|7|8|9|9|10|12|

Ví dụ về vòng lặp cho từng bộ sưu tập

Chúng tôi tạo một bộ sưu tập tên và hiển thị tất cả các tên trên màn hình.
List<String> names = new ArrayList<>();
        names.add("Snoopy");
        names.add("Charlie");
        names.add("Linus");
        names.add("Shroeder");
        names.add("Woodstock");

        for(String name : names){
            System.out.println(name);
        }

Hạn chế của vòng lặp for-each

Dạng rút gọn của vòng lặp for-each được coi là dễ đọc hơn vòng lặp for và cách tốt nhất là sử dụng vòng lặp for-each bất cứ khi nào có thể. Tuy nhiên, vòng lặp for-each là cấu trúc kém phổ biến hơn so với vòng lặp for thông thường . Dưới đây là một số trường hợp đơn giản khi vòng lặp for-each hoàn toàn không hoạt động hoặc sẽ hoạt động nhưng chỉ gặp khó khăn.
  1. Nếu bạn muốn chạy qua một vòng từ cuối đến đầu. Nghĩa là, không có vòng lặp for-each tương tự trực tiếp với đoạn mã sau:

    for (int i= array.length-1; i>0; i--)
    {
          System.out.println(array[i]);
    }
  2. For-each không phù hợp nếu bạn muốn thay đổi một mảng. Ví dụ: bạn không thể sắp xếp một mảng mà không thay đổi vị trí của các phần tử trong đó. Ngoài ra, trong đoạn mã sau, chỉ biến iterator sẽ thay đổi, không phải phần tử của mảng:

    for (int itVar : array)
    {
        itVar = itVar++;
    }
  3. Nếu bạn đang tìm kiếm một phần tử trong một mảng và bạn cần trả về (hoặc chuyển tiếp) chỉ số của phần tử mà bạn đang tìm kiếm, thì tốt hơn là sử dụng vòng lặp for thông thường .

Một video hữu ích về vòng lặp for-each

Vòng lặp trong khóa học CodeGym

Trên CodeGym, chúng ta bắt đầu thực hành sử dụng vòng lặp ở Cấp độ 4 của nhiệm vụ Cú pháp Java . Một số bài học ở cấp độ đó, cũng như nhiều nhiệm vụ ở các cấp độ khác nhau, được dành cho các vòng lặp nhằm củng cố kỹ năng của bạn khi làm việc với chúng. Về cơ bản, không có cách nào bạn có thể thoát khỏi chúng — vòng lặp là một trong những cấu trúc quan trọng nhất trong lập trình.

Thông tin thêm về vòng lặp for-each và các vòng lặp khác

  1. Câu lệnh while . Bài viết nói về loại vòng lặp đơn giản nhất: whilevòng lặp mà CodeGym sử dụng để giới thiệu các vòng lặp cho sinh viên.
  2. Ngừng viết vòng lặp! 10 phương pháp hay nhất để làm việc với các bộ sưu tập trong Java 8 . Bài viết này sẽ giúp các học viên CodeGym đã học được ít nhất nửa khóa học học được nhiều điều thú vị về cách làm việc với các tập hợp.
Bình luận
  • Phổ biến
  • Mới
Bạn phải đăng nhập để đăng nhận xet
Trang này chưa có bất kỳ bình luận nào