Sự khác biệt chính - ArrayList và LinkedList
Bộ sưu tập rất hữu ích để lưu trữ dữ liệu. Trong một mảng bình thường, kích thước mảng là cố định. Đôi khi cần phải tạo các mảng có thể phát triển khi cần thiết. Các ngôn ngữ lập trình như Java có các bộ sưu tập. Nó là một khuôn khổ với một tập hợp các lớp và giao diện. Nó phục vụ như một vùng chứa cho một nhóm các phần tử. Tập hợp cho phép lưu trữ, cập nhật, truy xuất tập hợp các phần tử. Nó giúp làm việc với các cấu trúc dữ liệu như danh sách, tập hợp, cây và bản đồ. Danh sách là một giao diện của khung Bộ sưu tập. ArrayList và LinkedList là hai lớp trong khung công tác sưu tập. Chúng thực hiện giao diện bộ sưu tập và giao diện Danh sách. Bài viết này thảo luận về sự khác biệt giữa ArrayList và LinkedList. ArrayList là một lớp mở rộng AbstractList và triển khai giao diện List, giao diện này sử dụng nội bộ một mảng động để lưu trữ các phần tử dữ liệu. LinkedList là một lớp mở rộng AbstractSequentialList và triển khai các giao diện List, Deque và Queue, các giao diện này sử dụng nội bộ danh sách được liên kết kép để lưu trữ các phần tử dữ liệu. Đó là sự khác biệt chính giữa ArrayList và LinkedList.
ArrayList là gì?
Lớp ArrayList được sử dụng để tạo các mảng động. Không giống như một mảng thông thường, kích thước của một mảng động không cố định. Một đối tượng được tạo bằng lớp ArrayList được phép lưu trữ một tập hợp các phần tử trong danh sách. Dung lượng tự động tăng lên, do đó người lập trình có thể thêm các phần tử vào danh sách. Lớp ArrayList mở rộng lớp AbstractList thực hiện giao diện Danh sách. Do đó, các phương thức của giao diện List có thể được sử dụng bởi ArrayList. Để truy cập các phần tử, phương thức get () được sử dụng. Phương thức add () có thể được sử dụng để thêm các phần tử vào danh sách. Phương thức remove () được sử dụng để loại bỏ một phần tử ra khỏi danh sách. Tham khảo chương trình bên dưới.
Hình 01: Ví dụ về ArrayList
Theo chương trình trên, một đối tượng của ArrayList được tạo. Sử dụng phương thức add, các phần tử có thể được thêm động. Các phần tử “A”, “B”, “C”, “D” và “E” được thêm vào bằng cách sử dụng phương thức add. Phương thức remove được sử dụng để xóa một phần tử khỏi danh sách. Khi chuyển 4 đến phương thức remove, ký tự trong chỉ mục thứ 4 là “E” sẽ bị xóa khỏi danh sách. Khi lặp qua danh sách bằng vòng lặp for, các chữ cái A, B, C và D sẽ được in ra.
LinkedList là gì?
Tương tự như ArrayList, LinkedList được sử dụng để lưu trữ động các phần tử dữ liệu. Một đối tượng được tạo bằng cách sử dụng lớp LinkedList được phép lưu trữ một tập hợp các phần tử trong danh sách. Dung lượng tự động tăng lên, do đó người lập trình có thể thêm các phần tử vào danh sách. Nó sử dụng nội bộ danh sách liên kết kép để lưu trữ dữ liệu. Trong danh sách được liên kết kép, dữ liệu được lưu trữ dưới dạng các nút. Mỗi nút chứa hai liên kết. Liên kết đầu tiên trỏ đến nút trước đó. Liên kết tiếp theo trỏ đến nút tiếp theo trong chuỗi.
Lớp LinkedList mở rộng lớp AbstractSequentialList và triển khai giao diện Danh sách. Do đó, các phương thức của giao diện Danh sách có thể được sử dụng bởi LinkedList. Phương thức get () có thể được sử dụng để truy cập các phần tử của danh sách. Phương thức add () có thể được sử dụng để thêm các phần tử vào danh sách. Phương thức remove () được sử dụng để loại bỏ một phần tử ra khỏi danh sách. Tham khảo chương trình bên dưới.
Hình 02: Ví dụ với LinkedList
Theo chương trình trên, một đối tượng của LinkedList được tạo. Sử dụng phương thức add, các phần tử có thể được thêm động. Các phần tử “A”, “B”, “C”, “D” và “E” được thêm vào bằng cách sử dụng phương thức add. Phương thức remove được sử dụng để xóa một phần tử khỏi danh sách. Khi chuyển 4 đến phương thức remove, ký tự trong chỉ mục thứ 4 là “E” sẽ bị xóa khỏi danh sách. Khi lặp lại bằng vòng lặp for, các chữ cái A, B, C và D sẽ được in ra.
Điểm giống nhau giữa ArrayList và LinkedList là gì?
- Cả ArrayList và LinkedList đều triển khai giao diện Danh sách.
- Cả ArrayList và LinkedList đều có thể chứa các phần tử trùng lặp.
- Cả ArrayList và LinkedList đều duy trì thứ tự chèn.
Sự khác biệt giữa ArrayList và LinkedList là gì?
ArrayList so với LinkedList |
|
ArrayList là một lớp mở rộng AbstractList và triển khai giao diện Danh sách sử dụng bên trong một mảng động để lưu trữ các phần tử dữ liệu. | LinkedList là một lớp mở rộng AbstractSequentialList và triển khai các giao diện List, Deque, Queue, sử dụng nội bộ danh sách được liên kết kép để lưu trữ các phần tử dữ liệu. |
Phần tử truy cập | |
Truy cập các phần tử của ArrayList nhanh hơn so với LinkedList. | Việc truy cập các phần tử của LinkedList chậm hơn ArrayList. |
Phần tử thao tác | |
Thao tác các phần tử của ArrayList chậm hơn so với LinkedList. | Thao tác các phần tử của LinkedList nhanh hơn ArrayList. |
Hành vi | |
ArrayList hoạt động như một Danh sách. | LinkedList hoạt động như một Danh sách và một Hàng đợi. |
Tóm tắt - ArrayList vs LinkedList
Khung thu thập cho phép làm việc với các cấu trúc dữ liệu như danh sách, cây, bản đồ và tập hợp. Danh sách là một giao diện của khung bộ sưu tập. Bài viết này đã thảo luận về sự khác biệt giữa ArrayList và LinkedList. ArrayList là một lớp mở rộng AbstractList và triển khai giao diện Danh sách sử dụng bên trong một mảng động để lưu trữ các phần tử dữ liệu. LinkedList là một lớp mở rộng AbstractSequentialList và triển khai các giao diện List, Deque, Queue, sử dụng nội bộ danh sách được liên kết kép để lưu trữ các phần tử dữ liệu. Đó là sự khác biệt giữa ArrayList và LinkedList.