Vòng lặp foreach không được sử dụng để làm gì?

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 báo có tiêu đề "Ngừng viết các 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ú. Vòng lặp a for-each có thể được áp dụng cho mảng và bất kỳ lớp nào triển khai java. lang thang. Giao diện . Vòng lặp forvòng lặp 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 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 của 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 .

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 main , 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 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à một cấu trúc ít phổ biến hơn vòng lặp for . Dưới đây là một số trường hợp đơn giản khi vòng lặp for-eachvòng lặp 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 một vòng từ đầu đến cuối. Tức 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ử. 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ỉ mục của phần tử mà bạn đang tìm kiếm, thì tốt hơn là sử dụng một for loop.

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. Tuyên bố trong khi. Bài viết về loại vòng lặp đơn giản nhất. vòng lặp
    
    for [int i=0; i < array.length; i++] 
    { 
        
        // Statements 
    }
    
    0 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ị khi làm việc với các tập hợp

Nghệ thuật chuyển hướng

Nhà phát triển Android cao cấp tại United Tech

Artem là một lập trình viên chuyển đổi. Nghề nghiệp đầu tiên của anh ấy là chuyên gia phục hồi chức năng. Trước đây, ông đã giúp mọi người phục hồi sức khỏe của họ. [Đọc toàn bộ tiểu sử]

Hạn chế của vòng lặp forEach là gì?

Nhược điểm của vòng lặp for-each là. .
Chúng ta không thể nhảy qua một phần tử khi nó đi qua từng phần tử
Di chuyển theo thứ tự ngược lại là không thể
Chúng tôi không thể sửa đổi mảng nếu chúng tôi đang sử dụng vòng lặp for-each
Không thể theo dõi chỉ mục
Nó có một số chi phí hoạt động trong vòng lặp for

Vòng lặp foreach dùng để làm gì?

Vòng lặp foreach được sử dụng để lặp lại các phần tử của bộ sưu tập . Bộ sưu tập có thể là một mảng hoặc một danh sách. Nó thực thi cho từng phần tử có trong mảng.

Khi nào bạn không nên sử dụng vòng lặp for?

Hãy tóm tắt lại lý do chống lại vòng lặp for và cách những phương pháp này giải quyết chúng. .
Thiếu rõ ràng. Trong những trường hợp lý tưởng, mã tốt phải hiển nhiên và tự giải thích. .
Phản ứng phụ. Nhiều phương thức mảng là các hàm bậc cao hơn - chúng nhận hàm gọi lại làm một trong các tham số của chúng. .
đột biến có thể

Khi nào bạn sẽ sử dụng vòng lặp foreach thay vì vòng lặp for?

Chỉ sử dụng vòng lặp for-each khi bạn muốn lặp qua tất cả các giá trị trong một mảng hoặc danh sách. Nếu bạn chỉ muốn lặp qua một phần của mảng hoặc danh sách , hãy sử dụng vòng lặp for để thay thế. Ngoài ra, hãy sử dụng vòng lặp for thay vì vòng lặp for-each nếu bạn muốn thay đổi bất kỳ giá trị nào trong mảng hoặc danh sách.

Chủ Đề