Mảng (Array) trong Java

Trong bài viết này, tôi sẽ hướng dẫn các bạn cách xử lý mảng (array) trong Java. Theo tôi khi làm việc với Java, thì mảng (array) ít khi sử dụng vì một số hạn chế của nó. Tuy nhiên chúng ta cũng cần phải biết và tìm hiểu để sau này các bạn áp dụng mảng vào một số trường hợp mong muốn.

Mảng (array) là gì?

Mảng là tập hợp nhiều phần tử có cùng tên, cùng kiểu dữ liệu và mỗi phần tử trong mảng được truy xuất thông qua chỉ số của nó trong mảng. Chỉ số bắt đầu bằng 0.

Có bao nhiêu dạng mảng?

Mảng bao gồm:

  • Mảng một chiều
  • Mảng 2 chiều

Ưu và nhược điểm của mảng

Ưu điểm của mảng:

  • Cho phép xử lí nhiều thành phần dữ liệu trong cùng 1 thời điểm.
  • Cho phép truy cập ngẫu nhiên dữ liệu trong mảng.
  • Bộ nhớ chỉ được cấp cho mảng khi mảng thực sự được sử dụng.

Nhược điểm của mảng:

  • Kích thước mảng cố định không thay đổi.
  • Chỉ lưu trữ được duy nhất cùng một kiểu dữ liệu trong mảng

Với những nhược điểm nhưu trên, chúng ta khắc phục bằng cách sử dụng Collection trong java.

Áp dụng của mảng (array)

Vì mảng thường là những giá trị cố định nên những ứng dụng nào ít khi thay đổi thì chúng ta sẽ áp dụng mảng vào. Ví dụ như lưu trữ danh sách các thành phố ở Việt Nam, lưu trữ danh sách các tỉnh của Việt Nam…

Các bước khởi tạo mảng (array)

Để tạo ra một mảng trong một chương trình Java, chúng ta gồm 3 bước:

  1. Khai báo tên mảng.
  2. Tạo mảng.
  3. Khởi tạo các giá trị mảng.

Bay giờ, chúng ta sẽ cùng nhau đi tìm hiểu cụ thể quy trình thực hiện ba bước trên:

Khai báo mảng

<kiểu dữ liệu> <tên mảng>[];
hoặc
<kiểu dữ liệu>[] <tên mảng>; // ưu tiên hơn

Với 2 cách trên, các bạn có thể sử dụng cách nào cũng được. Tuy nhiên chúng ta nên sử dụng cách thứ 2.

Ví dụ cách khai báo mảng như sau:

int arNumber[] or int[] arNumber ;
char arChar[] or char[] arChar;
String arString[] or String[] arString;

Tạo mảng (array) trong Java

Để tạo mảng các bạn có thể sử dụng như sau:

<kiểu dữ liệu> <tên mảng>[] = new <kiểu dữ liệu>[Kich_co_mang];

Ví dụ:

int[] arNumber = new int[5]

char[] arCha = new char[4]

Mảng (array) một chiều trong Java

Dưới đây là cách khai báo và tạo mảng một chiều, bạn đọc theo dõi:

Ví dụ: Tạo mảng chứa 5 sinh viên 

Cách tạo mảng chứa 5 sinh viên như sau:

// khai báo và khởi tạo mảng
 String[] arrSV = new String[5];
 // gán giá trị cho các phần tử của mảng
 arrSV[0] = "Trần Phú";

 arrSV[1] = "Phương Linh";

 arrSV[2] = "Văn Đạt";

 arrSV[3] = "Nguyễn Đoàn Chuong";

 arrSV[4] = "Trần Trung Trực";

Hoặc chúng ta có thể gán các giá trị mặc định cho mảng như sau:

String[] arrSV = {"Trần Phú,Phương Linh,Văn Đạt,Nguyễn Đoàn Chuong,Trần Trung Trực"};

array trong java

Lưu ý: Với mảng, chỉ số phần tử của mảng (hay còn gọi cách khách là key của mảng) chạy từ 0 -> n 

Với ví dụ trên thì chỉ số phần tử của mảng sẽ từ 0 – 4, vì chúng ta có 5 phần tử tương ứng với 5 sinh viên.

Lấy giá trị của mảng:

Cách lấy giá trị rất đơn giản, bạn chỉ cần truy cập vào key của mảng theo quy tắc sau :

nameArray[key] // trong đó key là chỉ số của phần tử muốn lấy

Ví dụ chúng ta muốn lấy giá trị của phần tử thứ 2, tương ứng với sinh viên có tên “Phương Linh”. Lúc này chúng ta sẽ lấy như sau :

System.out.println(arrSV[1]);

Kết quả: Phương Linh

Nhưng các bạn thử suy nghĩ nếu với cách lấy trên, chúng ta muốn lấy tất cả các giá trị của phần tử của mảng, hoặc lấy các phần tử có index là chẵn hay lẻ thì lúc này chúng ta phải truy cập vào từng phần tử. Làm như vậy cũng được, tuy nhiên rất mất công và tốn chi phí thời gian. Nên lúc này chúng ta cần tìm cách giải quyết nhanh, gọn, lẹ hơn. Đó chính là dùng vòng lặp for hoặc foreach để in mảng trong java:

Vòng lặp for để in mảng (array) trong Java:

// khai báo và khởi tạo mảng
		String[] arrSV = new String[5];
		// gán giá trị cho các phần tử của mảng
		arrSV[0] = "Trần Phú";

		arrSV[1] = "Phương Linh";

		arrSV[2] = "Văn Đạt";

		arrSV[3] = "Nguyễn Đoàn Chuong";

		arrSV[4] = "Trần Trung Trực";
		
		for(int i = 0; i < arrSV.length; i++){
			System.out.println(arrSV[i]);
		}

Trong vòng lăp for trên, chúng ta thấy răng i sẽ chạy từ 0, vì chỉ số phần tử của mảng bắt đầu từ 0. Phương thức length trong java dùng để đếm số phần tử của mảng.

Kết quả:

Trần Phú
Phương Linh
Văn Đạt
Nguyễn Đoàn Chuong
Trần Trung Trực

Ngoài ra chúng ta cũng có thể dùng vòng lặp foreach để in mảng một cách dễ dàng:

Vòng lặp foreach để in mảng (array) trong Java:

for (String item : arrSV) {
  System.out.println(item);
}

Với cách xử bằng vòng lặp foreach các bạn có thể hiểu như sau:

Cứ một item (item ở đây là một đối tượng – object) có kiểu dữ liệu là String và thuộc mảng arrSV.

Kết quả tương tự:

Trần Phú
Phương Linh
Văn Đạt
Nguyễn Đoàn Chuong
Trần Trung Trực

Mảng hai chiều và đa chiều trong Java

Với mảng hai nhiêu hay đa chiều trong Java chúng ta sẽ có cách khai báo như sau:

Khai báo mảng hai chiều

<kiểu dữ liệu> <tên mảng>[][];
hoặc
<kiểu dữ liệu>[][] <tên mảng>; // ưu tiên hơn

 

Tạo mảng (array) hai chiều – đa chiều trong Java

Để tạo mảng hai chiều hay đa chiều trong java các bạn có thể sử dụng như sau:

<kiểu dữ liệu> <tên mảng>[][] = new <kiểu dữ liệu>
;

mảng 2 chiều- đa chiều trong java

Ví dụ:

int[] a = new int[5][2];

Ví dụ: Tạo ma trận gồm 2 dòng và 4 cột

Cách tạo mảng chứa 2 dòng và 5 cột như sau:

// khai báo và khởi tạo mảng
int[][] arrMT = new int[2][4];

Gán trị gị cho mảng:

// khai báo và khởi tạo mảng
 int[][] arrMT = new int[2][4];
 // dòng 1 cột 1
 arrMT[0][0] = 1;
 // dòng 1 cột 2
 arrMT[0][1] = 12;
 // dòng 1 cột 3
 arrMT[0][2] = 21;
 // dòng 1 cột 4
 arrMT[0][3] = 121;
 // dòng 2 cột 1
 arrMT[1][0] = 89;
 // dòng 2 cột 2
 arrMT[1][1] = 20;
 // dòng 2 cột 3
 arrMT[1][2] = 56;
 // dòng 2 cột 4
 arrMT[1][3] = 34;

Tương tự với mảng một chiều, chỉ số phần tử của các cột và hàng trong mảng 2 chiều bắt đầu bằng 0 – > n

Để lấy giá trị từng phần tử chúng ta sẽ truy cập vào chỉ số phần tử của hàng và cột của mảng 2 chiều.Ví dụ lấy giá trị của hàng 1 cột 2:

System.out.println(arrMT[0][1]);
// hàng 1: tương tứng = 0 
// cột 2: tương tứng bằng 1

Kết quả: 12

Chúng ta cũng có thể dùng vòng lặp for để duyệt qua mảng rồi in ra các giá trị phần tử của mảng như sau :

Vòng lặp for để in mảng (array) hai –  đa chiều trong Java:

for(int i = 0;i < 2;i++){
			for(int j = 0;j< 3; j++){
				System.out.println(arrMT[i][j]);
			}
		}

Vòng lặp đầu tiên là số hàng, vòng lặp thứ 2 là số cột. Như vậy với một hàng chúng ta sẽ có các cột tương ứng.

Kết quả:

1
12
21
89
20
56

Giới thiệu Lớp Array trong Java

Lớp java.util.Arrays chứa nhiều phương thức static đa dạng để xếp thứ tự và tìm kiếm các mảng, so sánh các mảng và điền các phần tử vào mảng.

STT Phương thức và Miêu tả
1 public static int binarySearch(Object[] a, Object key)Tìm kiếm mảng của Object (byte, int, double, …) đã cho với giá trị đã xác định bởi sử dụng thuật toán tìm kiếm nhị phân. Mảng này phải được xếp thứ tự trước khi gọi phương thức này. Nó trả về chỉ mục của từ khóa tìm kiếm, nếu nó nằm trong danh sách, nếu không thì, bằng (-(điểm chèn + 1)).
2 public static boolean equals(long[] a, long[] a2)Trả về true nếu hai mảng long đã cho là cân bằng nhau. Hai mảng này được cho là cân bằng nếu cả hai mảng chứa cùng số lượng phần tử, và tất cả các cặp phần tử tương ứng của hai mảng là cân bằng. Phương thức tương tự có thể được sử dụng bởi tất cả kiểu dữ liệu gốc khác (byte, short, int, …).
3 public static void fill(int[] a, int val)Gán giá trị int đã cho tới mỗi phần tử của mảng int đã cho. Phương thức tương tự có thể được sử dụng bởi tất cả kiểu dữ liệu gốc khác (byte, short, int, …).
4 public static void sort(Object[] a)Xếp thứ tự mảng các đối tượng đã cho theo thứ tự tăng dần, theo thứ tự tự nhiên của các phần tử. Phương thức tương tự có thể được sử dụng bởi tất cả kiểu dữ liệu gốc khác (byte, short, int, …).

 

Tóm tắt mảng 1 chiều và đa chiều
Tóm tắt mảng 1 chiều và đa chiều

Bài tập về mảng trong java :

Phần này mình sẽ ra một số bài tập về mảng trong java các bạn thử làm và comment phía dưới bài viết, mình sẽ hướng dẫn cũng như giải đáp và xem các bạn làm đúng chưa:

  1. Tạo mảng gồm 10 phần tử gồm các số nguyên, gán trị là các số ngẫu nhiên cho các phần tử của mảng, sau đó in ra danh sách các phần tử của mảng.
  2. Tạo mảng gồm 5 bạn gái cũ được nhập từ bàn phím, sau đó in ra danh sách các bạn gái cũ.

#Tổng kết

Hy vọng qua bài viết về mảng (array) trong Java, bạn đọc có thể hiểu và áp dụng vào bài toán thực thế, ứng dụng của các bạn! Chúc các bạn thực hiện thành công!

Nếu cảm thấy có ích, các bạn có thể chia sẻ để mọi người cùng học nhé! 

0 0 đánh giá
Đánh giá bài viết
Theo dõi
Thông báo của
guest
0 Góp ý
Phản hồi nội tuyến
Xem tất cả bình luận
x