Lesson Completion
Back to course

Jagged Arrays: Arrays with Varying Row Lengths

Beginner
15 minutes4.8Java

1. The Hook (The "Byte-Sized" Intro)

In a Nutshell: Jagged arrays are multi-dimensional arrays where each row can have a different length. They're memory-efficient when data isn't rectangular.

When Google Classroom stores assignments per student—each student has different submission counts: String[][] submissions = new String[30][]. Variable rows!


2. Conceptual Clarity

💡 The Analogy: Train with Different Car Sizes

  • Regular 2D = All cars same size
  • Jagged array = Some cars longer, some shorter
  • Memory saving = No wasted empty seats
graph TB Jagged["Jagged Array"] --> Row0["Row 0: [A][B][C][D]"] Jagged --> Row1["Row 1: [E][F]"] Jagged --> Row2["Row 2: [G][H][I]"] style Row0 fill:#2E7D32 style Row1 fill:#F57C00 style Row2 fill:#1976D2

3. Technical Mastery

Memory Layout

java
int[][] jagged = new int[3][]; // 3 rows, columns undefined jagged[0] = new int[4]; // Row 0 has 4 elements jagged[1] = new int[2]; // Row 1 has 2 elements jagged[2] = new int[3]; // Row 2 has 3 elements

4. Interactive & Applied Code

java
public class JaggedArrayDemo { public static void main(String[] args) { // Create jagged array int[][] jagged = new int[3][]; jagged[0] = new int[]{1, 2, 3, 4}; jagged[1] = new int[]{5, 6}; jagged[2] = new int[]{7, 8, 9}; // Static initialization int[][] triangle = { {1}, {2, 3}, {4, 5, 6}, {7, 8, 9, 10} }; // Iterate jagged array for (int i = 0; i < jagged.length; i++) { for (int j = 0; j < jagged[i].length; j++) { // ⚠️ Use jagged[i].length System.out.print(jagged[i][j] + " "); } System.out.println(); } // Enhanced for loop for (int[] row : triangle) { for (int val : row) { System.out.print(val + " "); } System.out.println(); } // Real-world: Pascal's Triangle int[][] pascal = new int[5][]; for (int i = 0; i < 5; i++) { pascal[i] = new int[i + 1]; pascal[i][0] = pascal[i][i] = 1; for (int j = 1; j < i; j++) { pascal[i][j] = pascal[i-1][j-1] + pascal[i-1][j]; } } // Real-world: Quiz answers (varying questions per topic) String[][] quizAnswers = { {"A", "B", "C"}, // Topic 1: 3 questions {"D", "A", "B", "C", "D"}, // Topic 2: 5 questions {"A", "A"} // Topic 3: 2 questions }; } }

⚠️ Common Mistakes

Mistake #1: Using fixed column length

java
int[][] jagged = new int[3][]; // ❌ Can't use jagged[0].length before initializing row! // Initialize each row first

Mistake #2: Null row access

java
int[][] arr = new int[3][]; // All rows are null! arr[0][0] = 5; // ❌ NullPointerException // Fix: arr[0] = new int[4]; first

5. The "Interview Corner"

🏆 Q1: "When to use jagged vs rectangular 2D?" Answer: Jagged: Variable row lengths (saves memory). Rectangular: Fixed grid (easier indexing).

🏆 Q2: "How to find total elements in jagged array?"

java
int total = 0; for (int[] row : jagged) { total += row.length; }

🎓 Key Takeaways

✅ Rows can have different lengths
✅ Create: new int[3][] then init each row
✅ Use arr[i].length for each row's size
✅ Memory efficient for irregular data
✅ Each row created/sized independently

Topics Covered

Java FundamentalsArrays

Tags

#java#arrays#data-structures#multidimensional-arrays#beginner-friendly

Last Updated

2025-02-01