Mảng trong java

0 phút đọc

Java cung cấp cho chúng ta rất nhiều cấu trúc dữ liệu, trong đó array là một cấu trúc cho phép lưu trữ một tập hợp các dữ liệu cùng loại, tuần tự và có số lượng xác định.

Cứ tưởng tượng nếu chúng ta cần sử dụng đến 100 biến int để lưu trữ data, thì chỉ với việc khai báo chúng ta đã ngốn hết 100 dòng code. Java cung cấp cho chúng ta rất nhiều cấu trúc dữ liệu, trong đó array là một cấu trúc cho phép lưu trữ một tập hợp các dữ liệu cùng loại, tuần tự và có số lượng xác định.

int[] arr = new int[100];

Khai báo mảng trong java

Cú pháp khai báo mảng trong java

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

Khởi tạo mảng

Cách 1: Khởi tạo không gán giá trị ban đầu

<Kiểu dữ liệu>[] <tên mảng> = new <kiểu dữ liệu>[số lượng phần tử];

Cách 2: Khởi tạo có giá trị ban đầu

<Kiểu dữ liệu>[] <tên mảng> = {value 0, value 1, ... value n};

Mảng hoạt động như thế nào

Một mảng sẽ có chỉ số index từ 0 đến n – 1 (n là số lượng phần tử của mảng).

Ví dụ: Khởi tạo mảng số nguyên 10 phần tử, có giá trị tuần tự từ 1 đến 10. Và xuất các giá trị của mảng ra màn hình console.

public class Thaycacac {
  public static void main(String[] args) {
    int[] arr = new int[10];
    for (int i = 0; i < 10; i++) {
      arr[i] = i + 1;
    }
    for(int item : arr) {
      System.out.print(item + " ");
    }
  }
}
Kết quả
1 2 3 4 5 6 7 8 9 10
Mảng trong java

Trong một mảng phần tử đầu tiên (index = 0) gọi là foundation address. Các phần tử khác sẽ được truy xuất dựa vào phần tử đầu tiên.

Truy xuất các phần tử của mảng

Chúng ta có 2 cách để truy xuất các phần tử của mảng

  • Truy xuất trực tiếp
  • Truy xuất tuần tự

Truy xuất trực tiếp

<mảng>[vị trí phần tử trong mảng];

Ví dụ: truy xuất phần tử thứ 5 của mảng

public class Thaycacac {
  public static void main(String[] args) {
    // Khoi tao mang
    int[] arr = new int[10];
    for (int i = 0; i < 10; i++) {
      arr[i] = i + 1;
    }
    System.out.println(arr[5]);
  }
}
Kết quả
6

Ví dụ khi mình truy xuất arr[10] là vị trí không hợp lệ mình sẽ được kết quả sau: Exception in thread “main” ava.lang.ArrayIndexOutOfBoundsException: 10 at Main.main(Main.java:11)

Truy xuất tuần tự

Sử dụng vòng lặp for truyền thống

for(int i = 0; i < 10; i++) {
  System.out.println(i);
}

Sử dụng foreach

for(int item : arr) {
  System.out.println(item);
}

Passing by reference

Khi truyền mảng vào một method và xử lý trên các phần tử thì sẽ thay đổi giá trị của mảng ban đầu.

Ví dụ: tăng mỗi phần tử trong mảng lên mảng lên 1 và in ra màn hình console.

public class Thaycacac {
  public static void main(String[] args) {
    // Khoi tao mang
    int[] arr = new int[10];
    for (int i = 0; i < 10; i++) {
      arr[i] = i + 1;
    }
    increment(arr);
    for(int item : arr) {
      System.out.print(item + " ");
    }
  }
  public static void increment(int[] arr) {
    for (int i = 0; i < 10; i++) {
      arr[i] += 1;
    }
  }
}
Kết quả
2 3 4 5 6 7 8 9 10 11

Chúng ta thấy hàm increment() đã thay đổi các giá trị trong mảng. Vì vậy ở hàm main truy xuất được mảng đã được update bởi increment().

Thao tác cơ bản trên mảng

Java cung cấp cho chúng ta một số thao tác cơ bản mà chúng ta thường xuyên sử dụng như sắp xếp, so sánh, ...

Ví dụ:

public static int binarySearch(Object[] a, Object key) // Tìm kiếm phần tử key trong mảng, điều kiện mảng đã được sắp xếp
public static boolean equals(long[] a, long[] a2) // So sánh 2 mảng, trả về true nếu bằng nhau(index, value), ngược lại false
public static void fill(int[] a. int val) // Khởi tạo mảng với giá trị được gán sẵn val
public static void sort(Object[] a) // Sắp xếp mảng tăng dần

Ví dụ: hàm sort

import java.util.Arrays;

public class Thaycacac {
  public static void main(String[] args) {
    // Khởi tạo mảng
    int[] arr = {5, 2, 0, -4, 3, 9};
    Arrays.sort(arr);
    for (int item : arr) {
        System.out.print(item + " ");
    }
  }
}
Kết quả
-4 0 2 3 5 9
Avatar TechMely Team
Được viết bởi

TechMely Team

Cuộc sống không phải là phim ảnh, không có nhiều đến thế... những lần không hẹn mà gặp.