Array trong java với ví dụ cụ thể

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.

Chúng ta cứ tưởng tượng nếu chúng ta cần sử dụng đến 100 biến int để lưu trữ data của chúng ta, thì chỉ với việc khai báo chúng ta đã ngốn hết 100 dòng code. Còn đối với mảng chúng ta sẽ làm như sau:

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> = {value0, value1, ... valuen};

Phương thức hoạt động của mảng

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 Main {

    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 + " ");
        }

    }
}

Output: 1 2 3 4 5 6 7 8 9 10 

array trong java(array in 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

arr[index];

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

public class Main {

    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]);

    }
}

Output: 6

Chú ý nếu index vượt ra khoảng chưá của mảng thì chúng ta sẽ nhận một exception đấy nhá. Khoảng hợp lệ 0 đến n – 1( n số lượng phần tử của mảng).

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 bạn truyền java vào một method, các thay đổi trên mảng sẽ được cập sau khi kết thúc method. 

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

public class Main {

    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;
        }
    }
}

Output: 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 array

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 etc, đựơc implement trong class java.util.Arrays.

STT Method
1 public static int binarySeach(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
2 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
3 public static void fill(int[] a. int val)

Khởi tạo mảng với giá trị được gán sẵn val
4 public static void sort(Object[] a) 

Sắp xếp mảng tăng dần

Demo hàm sort

import java.util.Arrays;

public class Main {

    public static void main(String[] args) {

        // Khoi tao mang
        int[] arr = {5, 2, 0, -4, 3, 9};
        Arrays.sort(arr);

        for (int item : arr) {
            System.out.print(item + " ");
        }
    }
}

Output: -4 0 2 3 5 9 

Các hàm khác các bạn có thể chạy thử nhé. 

Bài tập thực hành

Cho mảng số nguyên arr, gồm n phần tử. Tìm

  1. Xuất giá trị của tất cả các phần tử trong mảng
  2. Tìm phần tử nhỏ nhất
  3. Tìm phần tử lớn nhất
  4. Đếm số lượng phần tử chẵn
  5. Đếm số lượng phần tử lẽ

Bài tham khảo

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {

        int[] arr = {1, 4, 6, 7, 4, 8, 3, 19, 35, 46, 43};

        /* 1. Xuất giá trị của tất cả các phần tử trong mảng */

        for(int item : arr) {
            System.out.print(item + " ");
        }

        /* 2. Tìm phần tử nhỏ nhất */
        int min = Integer.MAX_VALUE;

        for(int item : arr) {
            if (item < min) {
                min = item;
            }
        }

        System.out.println("Phan tu nho nhat: " + min);


        /* Tìm phần tử lớn nhất */


        int max = Integer.MIN_VALUE;

        for(int item : arr) {
            if (item > max) {
                max = item;
            }
        }

        System.out.println("Phan tu lon nhat: " + max);


        /* Đếm số lượng phần tử chẵn */

        int count = 0;
        for(int item : arr) {
            if (item % 2 == 0) {
                count++;
            }
        }

        System.out.println("So luong phan tu chan: " + count);


        /*  Đếm số lượng phần tử lẽ */
        count = 0;
        for(int item : arr) {
            if (item % 2 != 0) {
                count++;
            }
        }

        System.out.println("So luong phan tu chan: " + count);


    }
}
0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x