1. Sự khác biệt trong việc khai báo
a. ArrayList
ArrayList<Integer> array = new ArrayList<Integer>();
Đoạn code trên khai báo một biến array kiểu ArrayList. Và vì sử dụng trực tiếp lớp ArrayList làm class triển khai, nên bạn có thể truy cập vào các phương thức và chức năng cụ thể của ArrayList.
Ví dụ:
array.ensureCapacity(100); // Một phương thức dành riêng cho ArrayList
b. List
List<Integer> array = new ArrayList<Integer>();
Ở đây, biến array được khai báo với kiểu List. Mặc dù sử dụng ArrayList làm lớp triển khai , nhưng chỉ các phương thức của List được sử dụng.
Ví dụ:
// array.ensureCapacity(100); // Không thể sử dụng vì List không có phương thức này // Dễ dàng chuyển đổi sang các lớp List khác như LinkedList
array = new LinkedList<Integer>();
2. Sự khác biệt giữa List và ArrayList
a. List
- List là một interface, nó định nghĩa các phương thức
- Có nhiều lớp triển khai như ArrayList, LinkedList,...
- Sử dụng List giúp viết code linh hoạt không phụ thuộc vào lớp triển khai nào cụ thể.
b. ArrayList
- ArrayList là một lớp triển khai từ List.
- Là triển khai dựa trên mảng, cho phép truy cập ngẫu nhiên nhanh chóng.
- Có các phương thức và chức năng cụ thể, có thể truy cập trực tiếp khi sử dụng.
3. Điểm quan trọng khi sử dụng
- Sử dụng **ArrayList<Integer> array = new ArrayList<Integer>(); ** khi bạn muốn sử dụng các tính năng cụ thể của ArrayList.
- Sử dụng **List<Integer> array = new ArrayList<Integer>(); ** khi bạn muốn tăng tính linh hoạt và dễ bảo trì của code. Điều này hữu ích khi cần thay đổi cài đặt sau này.
4. Ví dụ cụ thể
// Sử dụng List
List<Integer> array = new ArrayList<Integer>();
array.add(1);
array.add(2);
array.add(3); // Thay đổi lớp triển khai nhưng không gây ảnh hưởng
array = new LinkedList<Integer>();
array.add(4);
array.add(5);
Việc sử dụng kiểu interface giúp giảm thiểu ảnh hưởng khi thay đổi cài đặt sau này.
5. Tóm tắt
**ArrayList<Integer> array = new ArrayList<Integer>(); ** Sử dụng trực tiếp ArrayList, cho phép truy cập vào các phương thức và chức năng đặc biệt của ArrayList. **List<Integer> array = new ArrayList<Integer>(); ** Sử dụng List, tăng tính linh hoạt và dễ bảo trì của code. Đặc biệt hữu ích khi cần thay đổi cài đặt sau này.