Java - Mảng
Java cung cấp một cấu trúc dữ liệu, array, nơi lưu trữ một tập hợp tuần tự có kích thước cố định của các phần tử cùng loại. Mảng được sử dụng để lưu trữ một tập hợp dữ liệu, nhưng thường hữu ích hơn nếu coi một mảng là một tập hợp các biến cùng kiểu.
Thay vì khai báo các biến riêng lẻ, chẳng hạn như number0, number1, ... và number99, bạn khai báo một biến mảng chẳng hạn như số và sử dụng số [0], số [1] và ..., số [99] để biểu diễn các biến riêng lẻ.
Hướng dẫn này giới thiệu cách khai báo biến mảng, tạo mảng và xử lý mảng bằng cách sử dụng các biến được lập chỉ mục.
Khai báo biến mảng
Để sử dụng mảng trong chương trình, bạn phải khai báo một biến để tham chiếu đến mảng và bạn phải chỉ định kiểu mảng mà biến có thể tham chiếu. Đây là cú pháp để khai báo một biến mảng:
Cú pháp
dataType[] arrayRefVar; // preferred way.
or
dataType arrayRefVar[]; // works but not preferred way.
Note - Phong cách dataType[] arrayRefVarđược ưa thích. Phong cáchdataType arrayRefVar[] đến từ ngôn ngữ C / C ++ và được sử dụng trong Java để phù hợp với các lập trình viên C / C ++.
Thí dụ
Các đoạn mã sau là ví dụ về cú pháp này:
double[] myList; // preferred way.
or
double myList[]; // works but not preferred way.
Tạo Mảng
Bạn có thể tạo một mảng bằng cách sử dụng toán tử mới với cú pháp sau:
Cú pháp
arrayRefVar = new dataType[arraySize];
Câu lệnh trên thực hiện hai điều -
Nó tạo ra một mảng bằng cách sử dụng dataType [arraySize] mới.
Nó gán tham chiếu của mảng mới tạo cho biến arrayRefVar.
Khai báo một biến mảng, tạo một mảng và gán tham chiếu của mảng cho biến có thể được kết hợp trong một câu lệnh, như được hiển thị bên dưới:
dataType[] arrayRefVar = new dataType[arraySize];
Ngoài ra, bạn có thể tạo các mảng như sau:
dataType[] arrayRefVar = {value0, value1, ..., valuek};
Các phần tử mảng được truy cập thông qua index. Chỉ số mảng dựa trên 0; nghĩa là, chúng bắt đầu từ 0 đếnarrayRefVar.length-1.
Thí dụ
Câu lệnh sau khai báo một biến mảng, myList, tạo một mảng gồm 10 phần tử kiểu kép và gán tham chiếu của nó cho myList:
double[] myList = new double[10];
Hình sau đại diện cho mảng myList. Ở đây, myList chứa mười giá trị kép và các chỉ số từ 0 đến 9.
Mảng xử lý
Khi xử lý các phần tử mảng, chúng ta thường sử dụng for vòng lặp hoặc foreach vòng lặp vì tất cả các phần tử trong một mảng có cùng kiểu và kích thước của mảng đã biết.
Thí dụ
Đây là một ví dụ hoàn chỉnh cho thấy cách tạo, khởi tạo và xử lý mảng -
public class TestArray {
public static void main(String[] args) {
double[] myList = {1.9, 2.9, 3.4, 3.5};
// Print all the array elements
for (int i = 0; i < myList.length; i++) {
System.out.println(myList[i] + " ");
}
// Summing all elements
double total = 0;
for (int i = 0; i < myList.length; i++) {
total += myList[i];
}
System.out.println("Total is " + total);
// Finding the largest element
double max = myList[0];
for (int i = 1; i < myList.length; i++) {
if (myList[i] > max) max = myList[i];
}
System.out.println("Max is " + max);
}
}
Điều này sẽ tạo ra kết quả sau:
Đầu ra
1.9
2.9
3.4
3.5
Total is 11.7
Max is 3.5
Vòng lặp foreach
JDK 1.5 đã giới thiệu một vòng lặp for mới được gọi là vòng lặp foreach hoặc vòng lặp for nâng cao, cho phép bạn duyệt toàn bộ mảng một cách tuần tự mà không cần sử dụng biến chỉ mục.
Thí dụ
Đoạn mã sau hiển thị tất cả các phần tử trong mảng myList:
public class TestArray {
public static void main(String[] args) {
double[] myList = {1.9, 2.9, 3.4, 3.5};
// Print all the array elements
for (double element: myList) {
System.out.println(element);
}
}
}
Điều này sẽ tạo ra kết quả sau:
Đầu ra
1.9
2.9
3.4
3.5
Truyền Mảng cho các Phương thức
Cũng giống như bạn có thể truyền các giá trị kiểu nguyên thủy cho các phương thức, bạn cũng có thể truyền mảng cho các phương thức. Ví dụ: phương pháp sau đây hiển thị các phần tử trongint mảng -
Thí dụ
public static void printArray(int[] array) {
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + " ");
}
}
Bạn có thể gọi nó bằng cách truyền một mảng. Ví dụ: câu lệnh sau gọi phương thức printArray để hiển thị 3, 1, 2, 6, 4 và 2 -
Thí dụ
printArray(new int[]{3, 1, 2, 6, 4, 2});
Trả về một mảng từ một phương thức
Một phương thức cũng có thể trả về một mảng. Ví dụ: phương thức sau đây trả về một mảng là sự đảo ngược của một mảng khác:
Thí dụ
public static int[] reverse(int[] list) {
int[] result = new int[list.length];
for (int i = 0, j = result.length - 1; i < list.length; i++, j--) {
result[j] = list[i];
}
return result;
}
Lớp Mảng
Lớp java.util.Arrays chứa nhiều phương thức tĩnh khác nhau để sắp xếp và tìm kiếm mảng, so sánh mảng và điền vào các phần tử của mảng. Các phương thức này được nạp chồng cho tất cả các kiểu nguyên thủy.
Sr.No. | Phương pháp & Mô tả |
---|---|
1 | public static int binarySearch(Object[] a, Object key) Tìm kiếm mảng Đối tượng được chỉ định (Byte, Int, double, v.v.) cho giá trị được chỉ định bằng cách sử dụng thuật toán tìm kiếm nhị phân. Mảng phải được sắp xếp trước khi thực hiện cuộc gọi này. Điều này trả về chỉ mục của khóa tìm kiếm, nếu nó có trong danh sách; nếu không, nó trả về (- (điểm chèn + 1)). |
2 | public static boolean equals(long[] a, long[] a2) Trả về true nếu hai mảng độ dài được chỉ định bằng nhau. Hai mảng được coi là bằng nhau nếu cả hai mảng chứa cùng số phần tử và tất cả các cặp phần tử tương ứng trong hai mảng đều bằng nhau. Điều này trả về true nếu hai mảng bằng nhau. Tất cả các kiểu dữ liệu nguyên thủy khác có thể sử dụng cùng một phương pháp (Byte, short, Int, v.v.) |
3 | public static void fill(int[] a, int val) Gán giá trị int đã chỉ định cho mỗi phần tử của mảng int được chỉ định. Phương pháp tương tự có thể được sử dụng bởi tất cả các kiểu dữ liệu nguyên thủy khác (Byte, short, Int, v.v.) |
4 | public static void sort(Object[] a) Sắp xếp mảng đối tượng được chỉ định theo thứ tự tăng dần, theo thứ tự tự nhiên của các phần tử của nó. Phương pháp tương tự có thể được sử dụng bởi tất cả các kiểu dữ liệu nguyên thủy khác (Byte, short, Int, v.v.) |