Thursday, December 31, 2020

Split Array into Two Parts in Java

 Split Array into Two Parts in Java

Trong bài đăng này, chúng ta sẽ xem cách chia mảng thành hai phần trong Java. Nếu mảng chứa một số mục lẻ, thì mục bổ sung phải là một phần của mảng đầu tiên.

Giải pháp ngây thơ sẽ tạo ra hai mảng mới và gán các phần tử từ nửa đầu của mảng nguồn cho mảng đầu tiên và các phần tử từ nửa sau của mảng nguồn sang mảng thứ hai.

import java.util.Arrays;

class Main

{

    // Function to split array into two parts in Java

    public static void main(String[] args) {

 

        int[] inp = { 1, 2, 3, 4, 5 };

        int n = inp.length;

 

        int[] a = new int[(n + 1)/2];

        int[] b = new int[n - a.length];

 

        for (int i = 0; i < n; i++)

        {

            if (i < a.length)

                a[i] = inp[i];

            else

                b[i - a.length] = inp[i];

        }

 

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

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

    }

}


Kết quả:

[1, 2, 3]

[4, 5]

System.arraycopy()

System.arraycopy () sao chép một mảng bắt đầu từ vị trí được chỉ định trong mảng nguồn được chỉ định đến vị trí được chỉ định trong mảng đích. Chúng ta có thể sử dụng phương pháp này để chia mảng như hình dưới đây:

import java.util.Arrays;

class Main

{

    // Function to split array into two parts in Java

    public static void main(String[] args) {

 

        int[] inp = { 1, 2, 3, 4, 5 };

        int n = inp.length;

 

        int[] a = new int[(n + 1)/2];

        int[] b = new int[n - a.length];

 

        System.arraycopy(inp, 0, a, 0, a.length);

        System.arraycopy(inp, a.length, b, 0, b.length);

 

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

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

    }

}

Kết quả:

[1, 2, 3]

[4, 5]

Arrays.copyOfRange()

Trong cả hai cách tiếp cận được thảo luận ở trên, chúng tôi cấp phát bộ nhớ cho cả hai mảng theo cách thủ công. Java Collection Framework cũng cung cấp một phương thức copyOfRange () sao chép phạm vi được chỉ định của mảng nguồn vào một mảng mới và trả về mảng đó.

import java.util.Arrays;

class Main

{

    // Function to split array into two parts in Java

    public static void main(String[] args) {

        int[] inp = { 1, 2, 3, 4, 5 };

        int n = inp.length;

        int[] a = Arrays.copyOfRange(inp, 0, (n + 1)/2);

        int[] b = Arrays.copyOfRange(inp, (n + 1)/2, n);

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

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

    }

}

Kết quả:

[1, 2, 3]

[4, 5]

No comments:

Post a Comment