JavaRush /จาวาบล็อก /Random-TH /สำหรับแต่ละวงใน Java

สำหรับแต่ละวงใน Java

เผยแพร่ในกลุ่ม

foreach ใน Java คืออะไร?

For-each เป็นประเภทของ for loop ที่ใช้เมื่อคุณต้องการประมวลผลองค์ประกอบทั้งหมดของอาร์เรย์หรือคอลเลกชัน “For Each” แปลมาจากภาษาอังกฤษว่า “For Everyone” จริงๆ แล้ว วลี foreach นั้นไม่ได้ใช้ในการวนซ้ำนี้ ไวยากรณ์ของมันมีดังนี้:
for (type itVar : array)
{
    Блок операторов;
}
โดยที่typeประเภทของตัวแปรวนซ้ำ (เหมือนกับประเภทข้อมูลในอาร์เรย์!) itVarคือชื่อของมันarrayคืออาร์เรย์ (อาจมีโครงสร้างข้อมูลอื่น คอลเลกชันบางประเภท เช่นArrayList) นั่นคือ วัตถุที่ดำเนินการวนซ้ำ อย่างที่คุณเห็น การออกแบบนี้ไม่ได้ใช้ตัวนับ ตัวแปรการวนซ้ำจะวนซ้ำองค์ประกอบของอาร์เรย์หรือคอลเลกชัน ไม่ใช่ค่าดัชนี เมื่อดำเนินการวนซ้ำ ตัวแปรการวนซ้ำจะถูกกำหนดค่าตามลำดับของแต่ละองค์ประกอบของอาร์เรย์หรือคอลเลกชัน หลังจากนั้นจึงดำเนินการบล็อกคำสั่ง (หรือคำสั่ง) ที่ระบุ

นอกเหนือจาก for-each loop แล้ว Java ยังมีเมธอด forEach() อีกด้วย คุณสามารถอ่านเกี่ยวกับเรื่องนี้ได้ในบทความ “ หยุดเขียนวงจร!” 10 วิธีที่ดีที่สุดในการทำงานกับคอลเลกชันใน Java 8

ความสนใจ:for-each loop สามารถใช้กับอาร์เรย์และคลาสใดๆ ที่ใช้อินเทอร์เฟซ java.lang.Iterable สิ่งที่เทียบเท่ากับโค้ดด้านบนจะเป็นดังนี้for loop :
for (int i=0; i<array.length; i++)
{

    Блок операторов;
}

ตัวอย่าง foreach Java

มาสร้างอาร์เรย์เกรดของนักเรียนกันดีกว่า จากนั้น เมื่อใช้ for-each เราจะพิมพ์คะแนนทั้งหมด แสดงคะแนนเฉลี่ย และค้นหาคะแนนสูงสุด
public class ForEachTest {

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

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

//method that displays the average score

public static double midGrade(int[] numbers) {
        int grade = 0;

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

    }
//method in which the best (maximum) score is calculated
    public static int bestGrade(int[] numbers) {
        int maxGrade = numbers[0];

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

public static void main(String[] args) {

//array of ratings
int[] grades = {5, 10, 7, 8, 9, 9, 10, 12};


  int highest_marks = bestGrade(grades);
        System.out.print("All the grades: ");
        printAllGrades(grades);
        System.out.println("The highest grade is " + highest_marks);
        System.out.println("The average grade is " + midGrade(grades));
    }

}
ผลลัพธ์ของโปรแกรม:
All the grades: |5|10|7|8|9|9|10|12|
The highest grade is 12
The average grade is 8.75
ตอนนี้เรามาดูกันว่าวิธีการพิมพ์คะแนนทั้งหมดจะเป็นอย่างไร โดยการใช้ for loop ปกติ:
public static void printAllGrades(int[] grades) {
        System.out.print("|");
        for (int i = 0; i < grades.length; i++) {

            System.out.print(grades[i] + "|");
        }
        System.out.println();
    }
ถ้าเราเรียกวิธีนี้จาก method mainเราจะได้ผลลัพธ์:
All the grades: |5|10|7|8|9|9|10|12|

ตัวอย่างการใช้ for-each loop กับคอลเลกชั่น

มาสร้างคอลเลกชันชื่อและแสดงชื่อทั้งหมดบนหน้าจอกัน
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);
        }

ข้อจำกัดของ for-each loop

รูปแบบย่อของ for-each ถือว่าอ่านง่ายกว่า for และถือเป็นแนวทางปฏิบัติที่ดีที่จะใช้ for-each ในจุดที่สามารถทำได้ อย่างไรก็ตาม for-each มีโครงสร้างที่หลากหลายน้อยกว่าปกติสำหรับ ต่อไปนี้เป็นกรณีง่ายๆ บางประการที่การใช้ for-each จะไม่ทำงานเลยหรือจะทำงานได้ยาก แต่จะเกิดความยุ่งยาก
  1. หากคุณต้องการผ่านวงตั้งแต่ต้นจนจบ นั่นคือไม่มีแอนะล็อกสำหรับแต่ละโค้ดโดยตรงสำหรับโค้ดต่อไปนี้:

    for (int i = array.length - 1; i >= 0; i--)
    {
          System.out.println(array[i]);
    }
  2. For-each ไม่เหมาะหากคุณต้องการเปลี่ยนแปลงอาร์เรย์ ตัวอย่างเช่น จะไม่สามารถจัดเรียงอาร์เรย์โดยไม่สลับองค์ประกอบได้ หรือในโค้ดต่อไปนี้ ไม่ใช่องค์ประกอบอาร์เรย์ที่จะเปลี่ยนแปลง แต่จะมีเพียงตัวแปรการวนซ้ำเท่านั้น:

    for (int itVar : array)
    {
        itVar = itVar++;
    }
  3. หากคุณกำลังค้นหาองค์ประกอบในอาร์เรย์และจำเป็นต้องส่งคืน (หรือส่งต่อ) ดัชนีขององค์ประกอบที่คุณกำลังมองหา จะเป็นการดีกว่าถ้าใช้ for loop แบบปกติ

วิดีโอที่เป็นประโยชน์เกี่ยวกับ for-each ที่จัดทำโดยนักเรียน JavaRush

วนซ้ำในหลักสูตร JavaRush

ที่ JavaRush เราเริ่มใช้ลูปในทางปฏิบัติที่ระดับ4 ของภารกิจ Java Syntax มีการบรรยายหลายครั้งสำหรับพวกเขา รวมถึงงานต่างๆ ในระดับต่างๆ เพื่อเสริมสร้างทักษะในการทำงานกับพวกเขา โดยทั่วไปแล้ว คุณจะหนีไม่พ้นลูป เพราะ Loop เป็นหนึ่งในโครงสร้างที่สำคัญที่สุดในการเขียนโปรแกรม

ข้อมูลเพิ่มเติมเกี่ยวกับ for-each และ loops:

  1. For และ For-Each Loop: เรื่องราวของวิธีที่ฉันวนซ้ำ วนซ้ำ แต่ไม่ได้วนซ้ำ - บทความที่มีรายละเอียดที่ดีเกี่ยวกับ for และ for-each loop ใน Java ออกแบบมาสำหรับผู้อ่านที่ผ่านการฝึกอบรม (ประมาณ JavaRush ระดับ 10 ขึ้นไป)
  2. ในขณะที่คำสั่ง . บทความนี้เกี่ยวข้องกับวงจรที่ง่ายที่สุดwhileซึ่งคุณเริ่มทำความคุ้นเคยกับวงจรใน JavaRush
  3. หยุดเขียนวงจร! 10 วิธีที่ดีที่สุดในการทำงานกับคอลเลกชันใน Java 8 จากบทความนี้ นักเรียน JavaRush ที่เรียนจบไปแล้วครึ่งหลักสูตรขึ้นไปจะได้เรียนรู้มากมายเกี่ยวกับการทำงานกับคอลเลกชัน
ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION