ตัววนซ้ำและ for แบบเสริม
วนผ่านคอลเลกชันด้วย Iterator และ for แบบเสริม เรียนรู้การลบอย่างปลอดภัยระหว่างการวนซ้ำและข้อผิดพลาดที่พบบ่อย
ตัววนซ้ำและ for แบบเสริม เป็นบทเรียน Java Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 3 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Java Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Java Academy มีบทเรียนทั้งหมด 3 บทเรียน
ภาพรวม
ตัววนซ้ำ ช่วยควบคุมการเดินผ่านคอลเลกชันทีละขั้น ส่วน for แบบขยาย (for-each) สั้นและอ่านง่าย เหมาะสำหรับอ่านองค์ประกอบ ใช้ Iterator เมื่อต้องการลบข้อมูลอย่างปลอดภัยระหว่างการวนผ่าน
Iterator กับ for-each
- Iterator: ใช้เมื่ออาจต้องลบข้อมูลหรือต้องการควบคุมอย่างละเอียด
- for แบบขยาย: เหมาะที่สุดสำหรับลูปแบบอ่านอย่างเดียว
- อย่าเปลี่ยนแปลงโครงสร้างของคอลเลกชันภายใน for แบบขยาย
โค้ด: Iterator พื้นฐาน
Iterator ใช้ hasNext() และ next() การเรียก next() แต่ละครั้งจะเลื่อนไปข้างหน้าและส่งคืนองค์ประกอบนั้น
public class Main {
public static void main(String[] args) {
java.util.List<String> names = new java.util.ArrayList<>();
names.add("Ada"); names.add("Bob"); names.add("Cyd");
java.util.Iterator<String> it = names.iterator();
while (it.hasNext()) {
String s = it.next();
System.out.println(s);
}
}
}
ข้อควรระวัง
ข้อควรระวัง: การลบข้อมูลโดยตรงภายในลูป for แบบขยายมักทำให้เกิด ConcurrentModificationException ให้ใช้ Iterator เพื่อเปลี่ยนแปลงโครงสร้างอย่างปลอดภัย
โค้ด: การลบอย่างปลอดภัย
การลบอย่างปลอดภัย: เมื่อพบข้อมูลที่ตรงกัน ให้เรียก remove() บน Iterator ทันทีหลังจาก next()
public class Main {
public static void main(String[] args) {
java.util.List<String> words = new java.util.ArrayList<>();
words.add("to"); words.add("be"); words.add("or"); words.add("not");
java.util.Iterator<String> it = words.iterator();
while (it.hasNext()) {
String w = it.next();
if (w.length() <= 2) {
it.remove(); // safe removal
}
}
System.out.println(words); // [not]
}
}
โค้ด: for แบบขยาย/forEach
for แบบขยาย เหมาะสำหรับการอ่านข้อมูล ส่วน forEach ที่ใช้แลมบ์ดาเป็นรูปแบบสั้นอีกแบบหนึ่ง (Java 8 ขึ้นไป)
public class Main {
public static void main(String[] args) {
java.util.Set<String> tags = new java.util.HashSet<>();
tags.add("java"); tags.add("collections"); tags.add("oop");
// enhanced for: read-only
for (String t : tags) {
System.out.print("[" + t + "]");
}
System.out.println();
// Java 8+ forEach
tags.forEach(t -> System.out.println("tag=" + t));
}
}
แบบฝึกตรวจสอบการลบด้วย Iterator
ตรวจสอบอย่างรวดเร็ว: จะลบองค์ประกอบอย่างปลอดภัยขณะวนซ้ำผ่าน List ได้อย่างไร
ทบทวน
ทบทวน: ใช้ for แบบขยายสำหรับการอ่านข้อมูลง่าย ๆ และใช้ Iterator เมื่อต้องลบข้อมูลระหว่างการเดินผ่าน วิธีนี้ช่วยป้องกันข้อผิดพลาดขณะทำงาน
คำถามที่พบบ่อย
บทเรียน “ตัววนซ้ำและ for แบบเสริม” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ตัววนซ้ำและ for แบบเสริม” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Java Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Java Academy มีบทเรียนทั้งหมด 3 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ตัววนซ้ำและ for แบบเสริม”
วนผ่านคอลเลกชันด้วย Iterator และ for แบบเสริม เรียนรู้การลบอย่างปลอดภัยระหว่างการวนซ้ำและข้อผิดพลาดที่พบบ่อย คุณปฏิบัติ Java Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Java Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Java Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 3 บทเรียน
บทเรียน “ตัววนซ้ำและ for แบบเสริม” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Java Academy นี้ได้ไหม
ได้ บทเรียน Java Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ภาพรวมของ List และ Set
- ตัววนซ้ำและ for แบบเสริม
- ยูทิลิตีของคอลเลกชัน