1. The Hook (The "Byte-Sized" Intro)
- In a Nutshell: Array traversal visits each element systematically.
- Four patterns: for loop (index access), enhanced for (read-only), while loop, and reverse iteration.
When YouTube renders your subscription feed: for (Video v : subscriptions) display thumbnail. Every item, one by one!
2. Conceptual Clarity
š” Traversal Patterns
graph LR
Traversal["Traversal Types"] --> Forward["Forward<br/>0 ā length-1"]
Traversal --> Backward["Backward<br/>length-1 ā 0"]
Traversal --> ForEach["For-each<br/>Read-only"]
Traversal --> While["While<br/>Conditional"]
3. Interactive & Applied Code
java
public class ArrayTraversal {
public static void main(String[] args) {
int[] nums = {10, 20, 30, 40, 50};
// === FORWARD TRAVERSAL (for loop) ===
System.out.println("Forward:");
for (int i = 0; i < nums.length; i++) {
System.out.println("Index " + i + ": " + nums[i]);
}
// === BACKWARD TRAVERSAL ===
System.out.println("Backward:");
for (int i = nums.length - 1; i >= 0; i--) {
System.out.println("Index " + i + ": " + nums[i]);
}
// === ENHANCED FOR LOOP (read-only) ===
System.out.println("For-each:");
for (int num : nums) {
System.out.println(num);
}
// === WHILE LOOP ===
int i = 0;
while (i < nums.length) {
System.out.println(nums[i]);
i++;
}
// === 2D ARRAY TRAVERSAL ===
int[][] matrix = {{1, 2, 3}, {4, 5, 6}};
// Row-by-row
for (int row = 0; row < matrix.length; row++) {
for (int col = 0; col < matrix[row].length; col++) {
System.out.print(matrix[row][col] + " ");
}
System.out.println();
}
// Enhanced for (2D)
for (int[] row : matrix) {
for (int val : row) {
System.out.print(val + " ");
}
System.out.println();
}
// === SKIP EVERY OTHER (Step 2) ===
for (int j = 0; j < nums.length; j += 2) {
System.out.println(nums[j]); // 10, 30, 50
}
// === EARLY EXIT (break) ===
for (int num : nums) {
if (num == 30) break; // Stop at 30
System.out.println(num);
}
// === SKIP CERTAIN (continue) ===
for (int num : nums) {
if (num == 30) continue; // Skip 30
System.out.println(num);
}
}
}ā ļø Common Mistakes
Mistake #1: Off-by-one in reverse
java
for (int i = arr.length; i >= 0; i--) // ā Starts out of bounds!
// Fix: i = arr.length - 1Mistake #2: Modifying array in for-each
java
for (int num : nums) {
num = num * 2; // ā Modifies copy, not array!
}
// Use index-based for modification4. The "Interview Corner"
š Q1: "When to use for vs for-each?" Answer: for: need index or modification. for-each: read-only, cleaner.
š Q2: "Traverse 2D array in spiral order?" Answer: Use four boundaries (top, bottom, left, right) and shrink after each pass. Common FAANG question!
š Key Takeaways
ā
Forward: for (int i = 0; i < length; i++)
ā
Backward: for (int i = length-1; i >= 0; i--)
ā
For-each: read-only, cleaner syntax
ā
break/continue work in traversal
ā
2D: nested loops for rows and columns