Có những ngày bạn chỉ muốn duyệt list cho nhanh, không muốn nghĩ nhiều về i, length, hay mấy lỗi lố tay IndexOutOfBoundsException
👉 Lúc này, foreach xuất hiện như một người bạn tốt bụng.
🧸 foreach là gì vậy?
foreach là vòng lặp giúp bạn đi qua từng phần tử trong mảng hoặc collection mà không cần quan tâm index.
Cú pháp nhìn là thấy hiền:
for (Type item : collection) {
// làm gì đó với item
}
📌 Ý nghĩa đơn giản:
“Với mỗi
itemtrongcollectionthì làm việc này”
🍭 Ví dụ dễ thương với mảng
int[] numbers = {1, 2, 3, 4, 5};
for (int n : numbers) {
System.out.println(n);
}
✨ Không cần:
inumbers.length- lo sai index
Chỉ cần đọc và dùng ❤️
🍰 Dùng với List cũng xinh luôn
List<String> names = List.of("An", "Bình", "Chi");
for (String name : names) {
System.out.println("Hello " + name);
}
Cảm giác code:
“Ơ kìa, sao Java hôm nay dễ chịu vậy?” 😌
🌈 Khi nào nên dùng foreach?
Dùng foreach khi bạn:
✅ Chỉ đọc dữ liệu
✅ Muốn code gọn gàng
✅ Không cần biết vị trí phần tử
✅ Không xóa / thêm phần tử trong lúc duyệt
Ví dụ rất hợp:
for (User user : users) {
user.showInfo();
}
⚠️ Những lúc foreach không vui nữa
❌ Cần index
// foreach không biết bạn đang đứng ở số mấy đâu nha
👉 Lúc này quay về for truyền thống cho chắc 😅
❌ Xóa phần tử trong lúc duyệt
for (String s : list) {
list.remove(s); // boom 💥
}
👉 Dễ dính ConcurrentModificationException lắm đó!
❌ Muốn đổi giá trị mảng trực tiếp
for (int n : numbers) {
n = n * 2; // không ai nghe bạn đâu 😭
}
n chỉ là bản sao thôi, mảng gốc vẫn y nguyên.
🐣 Sự thật nho nhỏ
foreachchỉ là cú pháp cho dễ đọc- Bên trong Java vẫn dùng
Iteratorhoặc index - Không phải phép thuật ✨ nhưng dùng rất sướng
💖 So sánh nhanh cho dễ nhớ
| Tiêu chí | for | foreach |
|---|---|---|
| Gọn gàng | ❌ | ✅ |
| Có index | ✅ | ❌ |
| An toàn | ⚠️ | ✅ |
| Dễ thương | 🙂 | 🥰 |
🎀 Kết lại nhẹ nhàng
foreach không phải để làm mọi thứ.
Nhưng khi bạn chỉ cần đọc – duyệt – xử lý nhẹ, thì:
💡 Cứ
foreachmà dùng, đời sẽ bớt mệt hơn