Cả Array và ArrayList đều là các cấu trúc dữ liệu dựa trên chỉ mục thường được sử dụng trong các chương trình Java. Về mặt khái niệm, ArrayList được hỗ trợ nội bộ bởi các mảng, tuy nhiên, hiểu được sự khác biệt giữa hai loại này là chìa khóa để trở thành một nhà phát triển Java tuyệt vời. Đây là bước cơ bản để bắt đầu, đặc biệt là những người mới bắt đầu viết mã. Mặc dù cả hai đều được sử dụng để lưu trữ các phần tử trong Java, có thể là nguyên hàm hoặc đối tượng, nhưng chúng có phần khác biệt về mặt chức năng và hiệu năng. Sự khác biệt chính giữa hai là Array là tĩnh trong khi ArrayList có tính chất động. Bài viết này so sánh hai khía cạnh khác nhau để bạn có thể chọn cái này hơn cái kia.
Một trong những khác biệt lớn và đáng chú ý giữa hai cấu trúc dữ liệu là Array có bản chất tĩnh, có nghĩa là nó là kiểu dữ liệu có độ dài cố định trong khi ArrayList có tính chất động có nghĩa là cấu trúc dữ liệu có độ dài thay đổi. Về mặt kỹ thuật, độ dài của Array không thể thay đổi hoặc sửa đổi sau khi đối tượng Array được tạo. Nó chứa bộ sưu tập tuần tự các yếu tố cùng loại dữ liệu. Mảng trong Java hoạt động khác với chức năng của chúng trong C / C ++. Mặt khác, ArrayList có thể tự thay đổi kích thước và các mảng có thể phát triển khi cần. Vì nó là cấu trúc dữ liệu động, các phần tử có thể được thêm và xóa khỏi danh sách.
Bạn không thể tạo Mảng các lớp giao diện Chung trong Java để các mảng và tổng quát không song hành với nhau khiến cho không thể tạo Mảng chung vì một lý do cơ bản là các mảng là đồng biến trong khi các tổng quát là bất biến. Trong khi Array là cấu trúc dữ liệu có độ dài cố định, nó chứa các đối tượng cùng lớp hoặc nguyên thủy của loại dữ liệu cụ thể. Vì vậy, nếu bạn cố lưu trữ các loại dữ liệu khác với loại dữ liệu được chỉ định trong khi tạo đối tượng Array, nó chỉ đơn giản là ném ra Array Arrayoreoreceptionception. Mặt khác, ArrayList hỗ trợ Generics để đảm bảo an toàn kiểu.
Các kiểu dữ liệu nguyên thủy như int, double, long và char không được phép trong ArrayList. Nó khá giữ các đối tượng và nguyên thủy không được coi là các đối tượng trong Java. Mặt khác, mảng có thể chứa các nguyên hàm cũng như các đối tượng trong Java vì đây là một trong những cấu trúc dữ liệu hiệu quả nhất trong Java để lưu trữ các đối tượng. Đó là một kiểu dữ liệu tổng hợp được thiết kế để chứa các đối tượng có thể là cùng loại hoặc khác loại.
Để có được độ dài của Mảng, mã cần truy cập vào thuộc tính độ dài vì người ta phải biết độ dài để thực hiện các thao tác trên Mảng. Mặc dù ArrayList sử dụng phương thức size () để xác định kích thước của ArrayList, nhưng nó khác với việc xác định độ dài của Array. Thuộc tính phương thức size () xác định số lượng phần tử trong một ArrayList, đến lượt nó là dung lượng của ArrayList.
Ví dụ:
lớp công khai ArrayLạngTest
public static void main (String [] args)
ArrayList ArrayList = new ArrayList ();
Chuỗi [] items = Mười Một, Một Hai, Một Ba,;
for (Chuỗi str: items)
ArrayList.add (str);
int size = items.size ();
System.out.println (kích thước);
Array là một thành phần lập trình riêng trong Java được tạo động và chúng sử dụng toán tử gán để giữ các phần tử, trong khi ArrayList sử dụng thuộc tính add () để chèn các phần tử. ArrayList là một lớp từ khung bộ sưu tập trong Java, sử dụng một tập hợp các phương thức được chỉ định để truy cập và sửa đổi các phần tử. Kích thước của một ArrayList có thể được tăng hoặc giảm một cách linh hoạt. Các phần tử trong một mảng được lưu trữ ở vị trí bộ nhớ liền kề và kích thước của nó vẫn tĩnh trong suốt.
Mặc dù cả hai cấu trúc dữ liệu đều cung cấp loại hiệu năng tương tự như một ArrayList được hỗ trợ bởi Arrays, nhưng một cấu trúc có một lợi thế hơn một chút so với việc sử dụng bộ nhớ và thời gian của CPU. Giả sử, nếu bạn biết kích thước của mảng, có khả năng bạn sẽ đi với ArrayList. Tuy nhiên, việc lặp qua một mảng nhanh hơn một chút so với việc lặp qua một ArrayList. Nếu chương trình liên quan đến một số lượng lớn các nguyên hàm, một mảng sẽ hoạt động tốt hơn đáng kể so với ArrayList, về cả thời gian và bộ nhớ. Mảng là một ngôn ngữ lập trình cấp thấp có thể được sử dụng trong triển khai bộ sưu tập. Tuy nhiên, hiệu suất có thể thay đổi tùy thuộc vào hoạt động bạn đang thực hiện.
Mảng | Lập danh sách |
Mảng là một cấu trúc dữ liệu có độ dài cố định có độ dài không thể sửa đổi khi đối tượng mảng được tạo. | ArrayList có tính chất động, có nghĩa là nó có thể tự thay đổi kích thước để phát triển khi được yêu cầu. |
Kích thước của một mảng vẫn tĩnh trong suốt chương trình. | Kích thước của ArrayList có thể tăng trưởng linh hoạt tùy thuộc vào tải và dung lượng. |
Nó sử dụng toán tử gán để lưu trữ các phần tử. | Nó sử dụng thuộc tính add () để chèn các phần tử. |
Nó có thể chứa các nguyên hàm cũng như các đối tượng có cùng kiểu dữ liệu hoặc khác nhau. | Nguyên thủy không được phép trong ArrayList. Nó chỉ có thể chứa các loại đối tượng. |
Mảng và Generics không đi đôi với nhau. | Generics được cho phép trong ArrayList. |
Mảng có thể đa chiều. | ArrayList là một chiều. |
Đây là thành phần lập trình gốc nơi các phần tử được lưu trữ ở các vị trí bộ nhớ liền kề. | Đó là một lớp từ khung bộ sưu tập của Java, nơi các đối tượng không bao giờ được lưu trữ ở các vị trí tiếp giáp nhau. |
Biến độ dài được sử dụng để xác định độ dài của Mảng. | Phương thức Size () được sử dụng để xác định kích thước của ArrayList. |
Mất ít bộ nhớ hơn ArrayList để lưu trữ các phần tử hoặc đối tượng được chỉ định. | Mất nhiều bộ nhớ hơn Array để lưu trữ các đối tượng. |
Lặp lại qua một mảng nhanh hơn lặp lại qua một ArrayList. | Lặp lại trên một ArrayList chậm hơn đáng kể về mặt hiệu suất. |
Mặc dù một số người có thể nghĩ rằng việc triển khai mảng trong chương trình có thể nhận được kết quả nhanh hơn so với thực hiện tương tự với ArrayLists vì lý do đơn giản là mảng là cấu trúc dữ liệu cấp thấp, hiệu suất có thể thay đổi tùy theo hoạt động bạn đang thực hiện. Chà, độ dài của một mảng là cố định, trong khi kích thước của ArrayList có thể tăng hoặc giảm một cách linh hoạt, vì vậy ArrayList có lợi thế hơn một chút so với Array về chức năng. Tuy nhiên, mặc dù có sự khác biệt, họ cũng có một số điểm tương đồng. Cả hai đều là các cấu trúc dữ liệu dựa trên chỉ mục trong Java cho phép bạn lưu trữ các đối tượng và cả hai đều cho phép các giá trị null cũng như các bản sao. Chà, nếu bạn biết trước kích thước của các đối tượng, bạn nên đi với một mảng và nếu bạn không chắc chắn về kích thước, hãy đi với ArrayList.