Jagged trong Java như thế nào? Ví dụ minh họa
Bạn đã bao giờ biết đến cấu trúc dữ liệu Jagged trong Java chưa? Bài viết này Bizfly Cloud sẽ giới thiệu đến bạn khái niệm này cùng với những ví dụ cụ thể, giúp bạn hiểu rõ hơn về tính linh hoạt của Jagged trong việc lưu trữ dữ liệu.
Khái niệm Jagged
Jagged còn được biết đến như một mảng của các mảng, là một cấu trúc dữ liệu trong đó một mảng được sử dụng để lưu trữ các mảng khác. Đặc điểm nổi bật của Jagged là mỗi phần tử của mảng chính có thể có kích thước khác nhau, cho phép chiều dài cột biến đổi trong một cấu trúc hai chiều.
Để hiểu về khái niệm Jagged, hãy cùng xem xét một ví dụ. Giả sử chúng ta muốn lưu trữ thông tin về học sinh và các điểm số tương ứng của họ. Chúng ta có thể tạo một Jagged để biểu diễn cấu trúc dữ liệu này. Dưới đây là cách nó trông như thế nào:
Lợi ích của việc sử dụng Jagged là nó cho phép tính linh hoạt trong việc lưu trữ dữ liệu khi số lượng phần tử trong mỗi mảng con là khác nhau. Điều này đặc biệt hữu ích trong các tình huống mà số lượng cột có thể thay đổi, chẳng hạn như khi xử lý dữ liệu không đều hoặc ma trận thưa.
Nhìn chung, Jagged cung cấp một cách linh hoạt để biểu diễn và làm việc với các cấu trúc dữ liệu nơi mà kích thước của mỗi chiều có thể thay đổi, làm cho chúng trở thành công cụ mạnh mẽ trong một số tình huống lập trình.
Ví dụ 1
Trong đoạn code trên, chúng ta đầu tiên khai báo một Jagged 2D jaggedArray với ba hàng. Tuy nhiên, chúng ta không xác định độ dài cột tại thời điểm này. Tiếp theo, chúng ta gán các mảng có kích thước khác nhau cho mỗi hàng của Jagged. Hàng đầu tiên có ba phần tử, hàng thứ hai có hai phần tử và hàng thứ ba có bốn phần tử.
Cuối cùng, chúng ta sử dụng các vòng lặp lồng nhau để duyệt qua jaggedarray và in các phần tử của nó. Vòng lặp bên ngoài duyệt qua các hàng và vòng lặp bên trong duyệt qua các cột của từng hàng.
Tên file: JaggedArrayExample.java
public class JaggedArrayExample public static void main(String[] args) int[][] jaggedArray = new int[3][]; // Gán các mảng có kích thước khác nhau cho Jagged jaggedArray[0] = new int[] { 1, 2, 3, 4 }; jaggedArray[1] = new int[] { 5, 6, 7 }; jaggedArray[2] = new int[] { 8, 9 }; // Truy cập và in các phần tử của Jagged for (int i = 0; i < jaggedArray.length; i++) for (int j = 0; j < jaggedArray[i].length; j++) System.out.print(jaggedArray[i][j] + " "); System.out.println();
Ví dụ 2
Trong đoạn code trên, chúng ta khai báo một Jagged 2D jaggedArray và khởi tạo nó với tên của học sinh ở các khối khác nhau. Hàng đầu tiên biểu diễn tên của học sinh lớp một. Hàng thứ hai biểu diễn tên của học sinh lớp hai và cứ thế tiếp tục.
Sau đó, chúng ta sử dụng các vòng lặp lồng nhau để duyệt qua Jagged và in tên của học sinh ở mỗi khối. Vòng lặp bên ngoài duyệt qua các hàng (các khối), và vòng lặp bên trong duyệt qua các cột (học sinh) của mỗi khối.
Tên file: JaggedArrayExample.java
public class JaggedArrayExample public static void main(String[] args) // Khai báo và khởi tạo Jagged 2D để lưu tên của học sinh ở các khối khác nhau String[][] jaggedArray = { {"Ram", "Laxman"}, // Học sinh khối 1 {"Rahul", "Gauri", "Komal"}, // Học sinh khối 2 {"Ajinkya", "Virat", "Tejaswi", "Sanju"} // Học sinh khối 3 }; // Truy cập và in các phần tử của Jagged for (int i = 0; i < jaggedArray.length; i++) // Duyệt qua các hàng (khối) System.out.print("Học sinh khối " + (i + 1) + ": "); for (int j = 0; j < jaggedArray[i].length; j++) // Duyệt qua các cột (học sinh) của mỗi khối System.out.print(jaggedArray[i][j] + " "); // In tên của mỗi học sinh System.out.println(); // Chuyển sang dòng mới sau khi in tên của học sinh trong một khối
Kết quả:
Học sinh khối 1: Ram Laxman
Học sinh khối 2: Rahul Gauri Komal
Học sinh khối 3: Ajinkya Virat Tejaswi Sanju
Ví dụ 3
Trong đoạn code trên, chúng ta có một Jagged jaggedArray lưu trữ các số khác nhau trong mỗi hàng. Hàng đầu tiên có ba phần tử, hàng thứ hai có hai phần tử, hàng thứ ba có bốn phần tử, và hàng thứ tư có một phần tử. Sau đó
Chúng ta sử dụng các vòng lặp lồng nhau để duyệt qua Jagged và tính tổng của mỗi hàng. Vòng lặp bên ngoài duyệt qua các hàng, và vòng lặp bên trong duyệt qua các cột của mỗi hàng. Tổng của mỗi hàng được tính bằng cách cộng tất cả các phần tử trong hàng đó.
Tên file: JaggedArrayExample.java
public class JaggedArrayExample public static void main(String[] args) int[][] jaggedArray = { {1, 2, 3}, // Hàng đầu tiên với ba phần tử {4, 5}, // Hàng thứ hai với hai phần tử {6, 7, 8, 9}, // Hàng thứ ba với bốn phần tử {10} // Hàng thứ tư với một phần tử }; // Tính tổng của mỗi hàng và hiển thị kết quả for (int i = 0; i < jaggedArray.length; i++) { int rowSum = 0; for (int j = 0; j < jaggedArray[i].length; j++) rowSum += jaggedArray[i][j]; System.out.println("Tổng của hàng " + (i + 1) + ": " + rowSum); }
Kết quả:
Tổng của hàng 1: 6
Tổng của hàng 2: 9
Tổng của hàng 3: 30
Tổng của hàng 4: 10
Cấu trúc dữ liệu Dữ liệu (tính toán) Java (ngôn ngữ lập trình)