Array & ArrayList - Sự khác biệt giữa Array và ArrayList trong Java
19/07/2021 02:05
Cùng tìm hiểu sự khác biệt và so sánh sự khác biệt của Array và ArrayList ngay trong bài viết dưới đây!
Trong bài viết trước, chúng ta đã tìm hiểu về mảng trong Java, chắn hẳn bạn đã có cái nhìn tổng quan về mảng trong Java. Trong bài viết nay, chúng ta sẽ so sánh Mảng - Array và ArrayList - một trong những nền tảng tập hợp Java. Cả Array và ArrayList đều là cấu trúc dữ liệu trong Java phục vụ cùng một mục đích. Cả hai đều đang được sử dụng để lưu trữ các biến có cùng kiểu dữ liệu và thực hiện các hoạt động trên chúng nhưng chúng có một số khác biệt về triển khai và hiệu suất. Vì vậy, chúng ta hãy cùng tìm hiểu sự khác biệt và so sánh sự khác biệt của Array và ArrayList nhé!
Array trong Java là gì?
Mảng là một cấu trúc dữ liệu có độ dài cố định trong Java để lưu trữ các phần tử của các kiểu dữ liệu tương tự trong các vị trí bộ nhớ liền kề. Chúng ta chỉ định kích thước của mảng trong quá trình tạo mảng.
Cú pháp tạo mảng:
data_type arrayname = new data_type [array_size];
Ví dụ:
int myArray = new int [10];
int myArray = new int [ 10 ] ;
ArrayList trong Java là gì?
ArrayList là một nền tảng tập hợp thu thập độ dài động trong Java và cũng lưu trữ các phần tử của cùng một loại nhưng ở đây chúng ta không cần đề cập tới kích thước trong thời điểm tạo nó như trường hợp trong mảng.
Tạo mảng bằng ArrayList:
ArrayList<data_type> objectName = new ArrayList<data_type>();
Ví dụ:
ArrayList < Integer > myArrayList = new ArrayList < Integer > ();
>>> Đọc thêm: Đệ quy trong Java - Tìm hiểu về đệ quy cho người mới bắt đầu
Sự khác biệt giữa Array và ArrayList trong Java
Việc so sánh Array và ArrayList trong Java sẽ dựa trên một số tham số khiến bạn dễ dàng hiểu được sự khác biệt giữa chúng. Giờ thì cùng xem sự khác biệt của cả hai qua những yếu tố dưới đây:
Về bản chất sự khác biệt giữa Array và ArrayList
Array trong Java có bản chất tĩnh, tức là chúng ta không thể thay đổi độ dài của chúng. Chiều dài của mảng là cố định. Khi chúng ta khai báo độ dài tại thời điểm tạo mảng, chúng ta không thể thay đổi kích thước của chúng.
Mặt khác, ArrayList trong Java có bản chất động, do đó đôi khi chúng ta có thể gọi nó là mảng động hoặc mảng có thể thay đổi. ArrayList có thể tự động tăng kích thước nếu chúng ta thêm nhiều giới hạn vượt quá khả năng xác định của nó, do đó nó có bản chất động.
Về thực thi Array và ArrayList
Một mảng là một đặc trưng cơ bản của Java, trong khi ArrayList là một phần của nền tảng tập hợp API trong Java. ArrayList trong Java được thực thi nội bộ bằng cách sử dụng Array. ArrayList là một lớp mang tất cả các thuộc tính của một lớp bình thường, chúng ta có thể tạo các đối tượng từ nó và gọi các phương thức với đối tượng. Mặc dù Mảng là một đối tượng trong Java nhưng không có phương thức nào mà chúng ta có thể gọi bằng đối tượng này. Một mảng chỉ có một thuộc tính duy nhất được gọi là độ dài length và cũng là một hằng số.
>>> Đọc thêm: Lớp trừu tượng trong Java - Nắm vững khái niệm về Abstract trong Java
Về hiệu suất Array và ArrayList
Vì ArrayList hoạt động nội bộ dựa trên mảng, có thể bạn sẽ nghĩ rằng hiệu suất của chúng tương đương nhau. Về cơ bản, việc này có thể được xem là đúng nhưng hiệu suất của ArrayList có thể chậm hơn khi so sánh với Arrays vì nó có thêm một số tính năng so với Array. Hiệu suất của ArrayList ảnh hưởng chủ yếu xét về thời gian chạy của CPU và cách sử dụng bộ nhớ.
Bất kỳ hoạt động resize () nào trên ArrayList có thể làm giảm hiệu suất của ArrayList vì nó liên quan đến việc tạo mảng mới và sau đó sao chép nội dung từ mảng cũ sang mảng mới. Do đó, thao tác này làm chậm hiệu suất của ArrayList.
Về tính linh hoạt Array và ArrayList
Tính linh hoạt là yếu tố quan trọng nhất tạo nên sự khác biệt đáng kể giữa Array và ArrayList trong Java. ArrayList linh hoạt hơn so với Arrays trong Java. Điều này là do ArrayList có bản chất động. ArrayList có thể tự động phát triển khi các phần tử được thêm vào vượt quá khả năng của nó, điều này không thể xảy ra với Array. Hơn nữa, ArrayList còn cho phép chúng ta loại bỏ các phần tử khỏi nó trong khi điều đó là không thể với Array. Chúng ta không thể xóa các phần tử khỏi một mảng sau khi thêm chúng.
Ví dụ:
Integer intObject[] = new Integer[3];
intObject[0] = new Integer(8); //new object is added to the array object
Loại dữ liệu được lưu trữ
Array có thể chứa cả kiểu dữ liệu nguyên thủy hoạc các đối tượng của một lớp dưới dạng các phần tử của mảng. Nhưng Arraylist chỉ có thể chứa các đối tượng của một lớp. Nó không thể có các kiểu dữ liệu nguyên thủy làm phần tử của nó. Bất cứ khi nào chúng ta truyền một số nguyên vào phương thức add của ArrayList, nó sẽ chuyển đối số đó thành đối tượng nguyên của lớp Wrapper.
>>> Tham khảo: Khóa học lập trình Java
Kết luận: Trên đây là một số so sánh về sự khác biệt giữa Array và ArrayList. Để sử dụng ArrayList, chúng ta cần nhập gói java.until.ArrayList, trong khi để sử dụng Array, bạn không cần nhập bất kỳ gói nào trong lớp của mình. ArrayList linh hoạt hơn mảng vì nó có nhiều chức năng có sẵn nhưng đồng thời nó có hiệu suất hoạt động kém hơn mảng. Hy vọng qua bài viết này bạn đã hiểu rõ hơn về Array và ArrayList. Tìm hiểu thêm về Java và các ngôn ngữ lập trình khác qua các khóa học lập trình trong Java.
>>> Đọc thêm thông tin về Java tại Viện công nghệ thông tin T3H