Thursday, July 1, 2021

Nối 2 mảng trong java

Trong chương trình này, bạn sẽ học cách nối hai mảng trong Java bằng cách sử dụng bản sao và không có mảng.

Để hiểu ví dụ này, bạn nên có kiến thức về các chủ đề lập trình Java sau:

  • Java Arrays
  • Java for-each Loop

Ví dụ Nối hai mảng bằng cách sử dụng bản sao mảng 

import java.util.Arrays;

public class Concat {

    public static void main(String[] args) {

        int[] array1 = {1, 2, 3};

        int[] array2 = {4, 5, 6};

        int aLen = array1.length;

        int bLen = array2.length;

        int[] result = new int[aLen + bLen];

        System.arraycopy(array1, 0, result, 0, aLen);

        System.arraycopy(array2, 0, result, aLen, bLen);

        System.out.println(Arrays.toString(result));

    }

}

Kết quả:

[1, 2, 3, 4, 5, 6]

Trong chương trình trên, chúng ta có hai mảng số nguyên là array1 và array2.

Để kết hợp (nối) hai mảng, chúng ta tìm độ dài của nó được lưu trữ trong aLen và bLen tương ứng. Sau đó, chúng ta tạo một kết quả mảng số nguyên mới với độ dài aLen + bLen.

Bây giờ, để kết hợp cả hai, chúng ta sao chép từng phần tử trong cả hai mảng để tạo ra kết quả bằng cách sử dụng hàm arrayycopy ().

Nói một cách đơn giản, hàm Arrayopy (array1, 0, result, 0, aLen) yêu cầu chương trình sao chép array1 bắt đầu từ chỉ số 0 đến kết quả từ chỉ mục 0 đến aLen.

Tương tự như vậy, đối với arrayycopy (array2, 0, result, aLen, bLen) ra lệnh cho chương trình sao chép array2 bắt đầu từ chỉ mục 0 đến kết quả từ chỉ mục aLen sang bLen

Ví dụ 2: Nối hai mảng mà không sử dụng mảng

import java.util.Arrays;

public class Concat {

    public static void main(String[] args) {

        int[] array1 = {1, 2, 3};

        int[] array2 = {4, 5, 6};

        int length = array1.length + array2.length;

        int[] result = new int[length];

        int pos = 0;

        for (int element : array1) {

            result[pos] = element;

            pos++;

        }

        for (int element : array2) {

            result[pos] = element;

            pos++;

        }

        System.out.println(Arrays.toString(result));

    }

}

Kết quả:

[1, 2, 3, 4, 5, 6]

Trong chương trình trên, thay vì sử dụng mảng, chúng ta sao chép thủ công từng phần tử của cả mảng array1 và array2 để kết quả.

Chúng tôi lưu trữ tổng độ dài cần thiết cho kết quả, tức là array1.length + array2. chiều dài. Sau đó, chúng tôi tạo một kết quả mảng mới có độ dài.

Bây giờ, chúng ta sử dụng vòng lặp for-each để lặp qua từng phần tử của array1 và lưu trữ nó trong kết quả. Sau khi gán nó, chúng ta tăng pos vị trí lên 1, pos ++.

Tương tự như vậy, chúng ta làm tương tự với array2 và lưu trữ từng phần tử trong kết quả bắt đầu từ vị trí sau array1.

No comments:

Post a Comment