Sự khác biệt giữa Array và ArrayList là câu hỏi phổ biến cho người mới bắt đầu đặc biệt là những người bắt đầu với code trong C và C++ và thích sử dụng Array. Cả hai Array và ArrayList được sử dụng để lưu trữ các phần tử hoặc đối tượng. Chính sự khác biệt giữa Array và ArrayList trong Java là tính chất tĩnh của Array và tính chất động của ArrayList. Sau khi tạo ra bạn không thể thay đổi kích thước của Array nhưng ArrayList có thể đặt lại kích thước chính nó khi cần thiết. Một khác biệt đáng chú ý giữa ArrayList và Array, Array là một phần lõi lập trình Java và có cú pháp và ngữ nghĩa đặc biệt hỗ trợ Java, ArrayList là một phần của Collection framework cùng với các lớp phổ biến khác như Vector, Hashtable, HashMap hoặc LinkedList.
Array và ArrayList trong Java
Đầu tiên sự khác biệt chính giữa Array và ArrayList trong Java, Array là cấu trúc dữ liệu chiều dài cố định trong khi ArrayList là biến chiều dài lớp Collestion. Bạn không thể thay đổi chiều dài của Array được tạo ra trong Java nhưng ArrayList định lại kích thước chính nó tùy thuộc vào năng lực và hệ số tải. Từ ArrayList là nội bộ được hỗ trợ bởi mảng trong Java, bất kỳ hoạt động thay đổi kích thước trong ArrayList sẽ làm chậm hiệu suất vì nó liên quan đến việc tạo ra mảng mới và sao chép nội dung từ mảng cũ sang mảng mới.
2) Một sự khác biệt giữa Array và ArrayList trong Java là không thể sử dụng Generics cùng với Array, như ví dụ mảng về các loại kiểu của nó có thể giữ và ném ArrayStoreException, nếu bạn cố gắng để lưu trữ kiểu đó là không thể chuyển thành kiểu Array. ArrayList cho phép sử dụng Generics để đảm bảo kiểu an toàn.
3) Tất cả các kiểu mảng cung cấp chiều dài biến biểu thị chiều dài của mảng ArrayList trong khi cung cấp phương thức size() để tính toán kích thước của ArrayList trong Java.
4) Một trong nhiều sự khác biệt lớn giữa ArrayList và Array là bạn không thể lưu trữ nguyên thủy trong ArrayList, nó chỉ có thể chứa các đối tượng. Trong khi mảng có thể chứa cả nguyên thủy và đối tượng trong Java. Mặc dù autoboxing của Java có thể cung cấp lưu trữ nguyên thủy trong ArrayList, nó thực sự tự động chuyển đổi nguyên thủy đến đối tượng.
Ví dụ:
ArrayList<Integer> integerList = new ArrayList<Integer>();
integerList.add(1); //here we are not storing primitive in ArrayList, instead autoboxing will convert int primitive to Integer object
5) Java cung cấp phương thức add() để chèn phần tử vào ArrayList và bạn chỉ có thể sử dụng toán tử gán để lưu trữ phần tử vào mảng
Ví dụ: Để lưu trữ đối tượng đến vị trí cụ thể sử dụng
Object[] objArray = new Object[10];
objArray[1] = new Object();
6) Một sự khác biệt thêm về Array vs ArrayList là có thể tạo ra instance của ArrayList mà không xác định kích thước, Java sẽ tạo ArrayList với kích thước mặc định nhưng bắt buộc cung cấp kích thước của mảng trong khi tạo ra cách trực tiếp hoặc gián tiếp bằng cách khởi tạo mảng khi tạo ra nó. Bằng cách này bạn cũng có thể khởi tạo ArrayList.
Đó là tất cả về sự khác biệt giữa mảng và ArrayList trong Java. Xét về hiệu suất Array và ArrayList cung cấp hiệu suất tương tự về thời gian liên tục để thêm hoặc nhận được yếu tố nếu biết chỉ số. Mặc dù tự động thay đổi kích thước của ArrayList có thể làm chậm chèn một chút