Bài tập nhap xuat mảng 1 chiều trong java năm 2024

Một trong những cách phổ biến nhất để thêm nhiều phần tử hơn vào một mảng là tạo một mảng mới, lớn hơn từ đầu, đặt các phần tử của mảng cũ và thêm phần tử mới. Dưới đây là hướng dẫn từng bước của quy trình:

  • Tạo một mảng mới với dung lượng a+n (a — dung lượng mảng ban đầu, n — số phần tử bạn muốn thêm vào).
  • Thêm tất cả các phần tử của phạm vi dữ liệu trước đó vào phạm vi dữ liệu mới, cũng như các giá trị mới.
  • In mảng kết quả.

Hãy thử tự tạo một mảng như vậy và so sánh mã của bạn với mã trong ví dụ bên dưới:


// Java Program to add an element in an Array
import java.lang.*;
import java.util.*;
class ArrayDemo {
   //Method to add an element x into array myArray
   public static int[] addX(int myArray[], int x) {
       int i;
       // create a new array of a bigger size (+ one element)
       int newArray[] = new int[myArray.length + 1];
       // insert the elements from the old array into the new one
       for (i = 0; i < myArray.length; i++)
           newArray[i] = myArray[i];
       newArray[myArray.length] = x;
       return newArray;
   }
   public static void main(String[] args) {
       int i;
       // initial array of size 10
       int arr[]
               = {0, 1, 2, 45, 7, 5, 17};
       // print the initial array
       System.out.println("Initial Array: " + Arrays.toString(arr));
       // element to be added
       int x = 28;
       // call the addX method to add x in arr
       arr = addX(arr, x);
       // print the updated array
       System.out.println("Array with " + x + " added:" + Arrays.toString(arr));
   }
}

Đầu ra là:

Mảng ban đầu: [0, 1, 2, 45, 7, 5, 17] Mảng có thêm 28: [0, 1, 2, 45, 7, 5, 17, 28]

Chà, cách này để thêm một phần tử mới vào một mảng là cách dễ nhất.

3. Áp dụng System.arrayCopy()

System.arrayCopy() là một phương pháp được sử dụng rộng rãi để phân bổ một mảng lớn hơn tại đích của một mảng nguồn. Nhà phát triển có thể chỉ định trình tự mà anh ta muốn sao chép sang một mảng mới trong dấu ngoặc của phương thức. Để xem phương pháp này hoạt động như thế nào và thử sử dụng nó cho chính bạn, hãy xem và thử chạy ví dụ bên dưới:


import java.util.Arrays;
class ArrayDemo {
   private static Integer[] addElement(Integer[] myArray, int newElement) {
       //we create a new Object here, an array of bigger capacity 
       Integer[] array = new Integer[myArray.length + 1];
       System.arraycopy(myArray, 0, array, 0, myArray.length);
       array[myArray.length] = newElement;
       return array;
   }
   public static void main(String[] args) {
       Integer[] myArray = {20, 21, 3, 4, 5, 88};
       System.out.println("myArray before adding a new element: " + Arrays.toString(myArray));
       myArray = addElement(myArray, 12);
       System.out.println("myArray before adding a new element: " + Arrays.toString(myArray));
   }
}

Đầu ra là:

myArray trước khi thêm phần tử mới: [20, 21, 3, 4, 5, 88] myArray trước khi thêm phần tử mới: [20, 21, 3, 4, 5, 88, 12]

Ở đây, chúng tôi đã tạo một mảng myArray , in nó ra và thêm một phần tử mới bằng cách sử dụng phương thức addElement của chúng tôi , được xây dựng trên System.arrayCopy() .

4. Sử dụng Apache Commons để sao chép mảng

Hãy sử dụng một cách không chuẩn. Cụ thể, thư viện bên thứ ba Apache Commons lang. Nó là một phần của dự án Apache Commons tập trung vào tất cả các khía cạnh của các thành phần Java có thể tái sử dụng. Kiến thức về dự án sẽ không thừa. Ngôn ngữ Apache Commons có một phương thức add() được thiết kế đặc biệt để cho phép mở rộng các mảng, nó tiết kiệm rất nhiều thời gian và công sức cho người viết mã. Cần lưu ý rằng phương thức add() của Apache Commons này dựa trên việc gọi phương thức System.arraycopy() trong trường hợp bạn phải trả lời một bài kiểm tra khó hoặc câu hỏi phỏng vấn. Để thêm các thư viện vào dự án của bạn, hãy truy cập trang web Apache Commons và tải xuống các thư viện. Sau đó, chuyển đến Tệp → Cấu trúc dự án → Thư viện > + và chọn các tệp jar đã tải xuống.

Bài tập nhap xuat mảng 1 chiều trong java năm 2024

import org.apache.commons.lang3.ArrayUtils;
import java.util.Arrays;
class ArrayDemo {
   private static <T> T[] append(T[] arr, T element) {
       return ArrayUtils.add(arr, element);
   }
   public static void main(String[] args) {
       Integer[] myArray = { 0, 1, 2, 3, 4};
       System.out.println("myArray: " + Arrays.toString(myArray));
       myArray = append(myArray, 5);
       System.out.println("new Array with the number added: " + Arrays.toString(myArray));
   }
}

Đầu ra là:

myArray: [0, 1, 2, 3, 4] Mảng mới với số được thêm vào: [0, 1, 2, 3, 4, 5]

5. Triển khai ArrayCopyOf()

ArrayCopyOf() là một phương pháp nữa để thêm một phần tử mới vào một mảng. Chẳng hạn như Apache Commons lang add() nó gọi nội bộ System.arraycopy() để thực hiện thao tác này. Tuy nhiên, hầu hết các nhà phát triển thích ArrayCopyOf() hơn vì nó cho phép họ giữ cho mã ngắn gọn và dễ đọc. Đây là một ví dụ về việc sử dụng ArrayCopyOf() để thêm các phần tử mới vào một mảng:


import java.util.Arrays;
class ArrayDemo {
   private static <X> X[] addElement(X[] myArray, X element) {
       X[] array = Arrays.copyOf(myArray, myArray.length + 1);
       array[myArray.length] = element;
       return array;
   }
   public static void main(String[] args) {
       Integer[] myArray = {20, 21, 3, 4, 5, 88};
       System.out.println("myArray before adding a new element: " + Arrays.toString(myArray));
       myArray = addElement(myArray, 12);
       System.out.println("myArray before adding a new element: " + Arrays.toString(myArray));
   }
}

Đầu ra là:

myArray trước khi thêm phần tử mới: [20, 21, 3, 4, 5, 88] myArray trước khi thêm phần tử mới: [20, 21, 3, 4, 5, 88, 12]

Phần kết luận

Biết cách thêm các phần tử vào một mảng giúp các nhà phát triển cập nhật mã cũ một cách nhanh chóng mà không làm mất chức năng và khả năng đọc của nó… Hoặc chỉ để vượt qua cuộc phỏng vấn. Vì có nhiều cách khác nhau để thêm các phần tử vào mảng Java, vui lòng chọn phương thức mà bạn cảm thấy thoải mái.