Bài tập

Mảng (array) trong Java

Huy Erick

Mảng trong Java là một đối tượng chứa các phần tử có cùng kiểu dữ liệu. Đây là một cấu trúc dữ liệu quan trọng trong ngôn ngữ lập trình Java, cho phép lưu trữ...

Mảng trong Java là một đối tượng chứa các phần tử có cùng kiểu dữ liệu. Đây là một cấu trúc dữ liệu quan trọng trong ngôn ngữ lập trình Java, cho phép lưu trữ và quản lý nhiều giá trị cùng một loại trong một biến duy nhất.

Mảng trong Java

Mảng (Array) là một cấu trúc dữ liệu cơ bản và quan trọng trong ngôn ngữ lập trình Java. Mảng cho phép bạn lưu trữ và quản lý nhiều giá trị cùng một loại trong một biến duy nhất. Bài viết này sẽ giúp bạn hiểu về mảng trong Java, cách khai báo, sử dụng và ví dụ về các thao tác trên mảng. Mảng trong Java lưu trữ các phần tử theo chỉ số, với chỉ số của phần tử đầu tiên là 0.

Khai báo mảng 1 chiều trong Java

Cú pháp khai báo

Có các cách khai báo mảng như sau:

  • Kiểu_dữ_liệu tên_mảng[];: Khai báo một con trỏ mảng.
  • Kiểu_dữ_liệu []tên_mảng;: Tương tự như trên.
  • Kiểu_dữ_liệu tên_mảng[] = new Kiểu_dữ_liệu[Số_lượng_phần_tử];: Tạo ra một mảng có spt phần tử.

Trong cú pháp trên:

  • Kiểu dữ liệu xác định kiểu dữ liệu của từng phần tử của mảng.
  • Số phần tử là số lượng phần tử của mảng và là một số nguyên.

Ví dụ

Ví dụ khai báo một mảng số nguyên gồm 100 phần tử:

int mangInt[]; // Khai báo một con trỏ đến mảng các số nguyên mangInt = new int[100]; // Tạo ra mảng  // Hoặc gộp cả khai báo và khởi gán các phần tử của mảng theo cách sau: tạo ra một mảng gồm 5 phần tử, các phần tử của mảng lần lượt được gán các giá trị là: 1, 3, 5, 7, 9 int[] mangInt = {1, 3, 5, 7, 9};

Khai báo một mảng gồm 100 đối tượng của lớp SinhVien:

SinhVien arraySinhVien[] = new SinhVien[100]; arraySinhVien[0] = new SinhVien("sv01", "Nguyễn Văn An", "Hưng Yên"); arraySinhVien[1] = new SinhVien("sv02", "Nguyễn Thị Bình", "Bắc Giang"); ... arraySinhVien[99] = new SinhVien("sv100", "Đào Thị Mến", "Hà Nam");

Truy cập đến các phần tử của mảng một chiều

Để truy cập phần tử thứ ind của mảng, sử dụng cú pháp Tên_mảng[Vị_trí_của_phần_tử].

Ví dụ: truy cập các phần tử của một mảng trong Java

public class Thaycacac {     public static void main(String[] args) {         String[] cars = {"Honda", "BMW", "Ford", "Mazda"};         System.out.println(cars[0]);     } }

Thay đổi một phần tử mảng trong Java

Để thay đổi giá trị của một phần tử cụ thể, gán lại giá trị dựa vào vị trí của phần tử trong mảng.

public class TruyCapArray2 {     public static void main(String[] args) {         String[] cars = {"Honda", "BMW", "Ford", "Mazda"};         // thay đổi phần tử đầu tiên của mảng cars         cars[0] = "Morning";         // hiển thị phần tử đầu tiên của mảng cars         System.out.println("Phần tử đầu tiên: " + cars[0]);     } }

Lấy số phần tử hiện tại của mảng trong Java

Để lấy số phần tử của mảng, sử dụng thuộc tính length.

public class Thaycacac {     public static void main(String[] args) {         String[] cars = {"Honda", "BMW", "Ford", "Mazda"};         System.out.println("Độ dài của mảng cars là: " + cars.length);     } }

Duyệt các phần tử của mảng trong Java

Sử dụng vòng lặp for

Bạn có thể lặp qua các phần tử mảng bằng vòng lặp for và sử dụng thuộc tính length để chỉ định số lần vòng lặp sẽ chạy.

public class Thaycacac {     public static void main(String[] args) {         String[] cars = {"Honda", "BMW", "Ford", "Mazda"};         for (int i = 0; i  cars.length; i++) {             System.out.println(cars[i]);         }     } }

Sử dụng vòng lặp foreach

Vòng lặp foreach dễ viết hơn, không yêu cầu bộ đếm (sử dụng thuộc tính length) và dễ đọc hơn.

public class Thaycacac {     public static void main(String[] args) {         String[] cars = {"Honda", "BMW", "Ford", "Mazda"};         for (String car : cars) {             System.out.println(car);         }     } }

Sắp xếp mảng trong Java

Có nhiều phương thức sắp xếp mảng có sẵn, ví dụ như Sort(), sắp xếp một mảng theo thứ tự bảng chữ cái hoặc theo thứ tự tăng dần.

import java.util.Arrays;  public class Thaycacac {     public static void main(String[] args) {         String[] cars = {"Honda", "BMW", "Ford", "Mazda"};         // sắp xếp mảng cars theo thứ tự tăng dần         Arrays.sort(cars);         System.out.println("Mảng cars sau khi được sắp xếp:");         for (String car : cars) {             System.out.println(car);         }     } }

Truyền mảng vào phương thức trong Java

Chúng ta có thể truyền mảng vào phương thức, điều này giúp tái sử dụng code logic để xử lý mảng bất kỳ.

public class Thaycacac {     static void min(int arr[]) {         int min = arr[0];         for (int i = 1; i  arr.length; i++)             if (min > arr[i]) {                 min = arr[i];             }         System.out.println(min);     }      public static void main(String args[]) {         int a[] = {33, 3, 4, 5};         min(a);// truyền mảng tới phương thức     } }

Sao chép một mảng trong Java

Chúng ta có thể sao chép một mảng vào mảng khác bằng phương thức arraycopy của lớp System.

public class Thaycacac {     public static void main(String[] args) {         char[] copyFrom = {'d', 'e', 'c', 'a', 'f', 'f', 'e', 'i', 'n', 'a', 't', 'e', 'd'};         char[] copyTo = new char[7];          System.arraycopy(copyFrom, 2, copyTo, 0, 7);         System.out.println(new String(copyTo));     } }

Mảng nhiều chiều

Khai báo

Khai báo mảng N chiều trong Java được tiến hành như sau:

// Khai báo một con trỏ của mảng 2 chiều int[][] a; int a[][];  // Hoặc // Khai báo và tạo ra mảng 2 chiều: Ma trận gồm 2 hàng, 3 cột int[][] a = new int[2][3];  // Khai báo và khởi gán giá trị cho các phần tử của mảng 2 chiều: int a[][] = {     {1, 2, 5}, // Các phần tử trên hàng thứ nhất     {2, 4, 7, 9}, // Các phần tử trên hàng thứ hai     {1, 7} // Các phần tử trên hàng thứ ba };

Khai báo trên tạo ra một mảng hai chiều gồm 3 hàng, nhưng trên mỗi hàng lại có số phần tử khác nhau. Hàng thứ nhất có 3 phần tử, hàng thứ 2 gồm 4 phần tử và hàng thứ 3 gồm 2 phần tử.

Truy xuất đến phần tử mảng nhiều chiều

Sử dụng cú pháp tên_mảng[ind1][ind2].

Ví dụ: khai báo và khởi tạo mảng đa chiều trong Java

public class TestArray3 {     public static void main(String args[]) {         // Khai báo và khởi tạo mảng 2 chiều         int arr[][] = {             {1, 2, 3}, // Hàng thứ nhất             {2, 4, 5}, // Hàng thứ hai             {4, 4, 5} // Hàng thứ ba         };          // In mảng 2 chiều ra màn hình         for (int i = 0; i  3; i++) {             for (int j = 0; j  3; j++) {                 System.out.print(arr[i][j] + " ");             }             System.out.println();         }     } }
1