Sự khác biệt giữa ArrayList và LinkedList

Sự khác biệt chính - ArrayList vs. Danh sách liên kết
 

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 được cố định. Đôi khi nó được yêu cầu để tạo ra 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 khung với một tập hợp các lớp và giao diện. Nó phục vụ như một container cho một nhóm các yếu tố. Bộ sưu tập cho phép lưu trữ, cập nhật, truy xuất tập hợp các yếu tố. Nó giúp làm việc với các cấu trúc dữ liệu như danh sách, bộ, cây và bản đồ. Danh sách này là một giao diện của khung Collection. ArrayList và LinkedList là hai lớp trong khung bộ sưu tập. Họ thực hiện giao diện thu thậ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à thực hiện giao diện List, bên trong sử dụng 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 các giao diện AbstractSequentialList và thực hiện các giao diện List, Deque và Queue, bên trong sử dụng danh sách liên kết đôi để lưu trữ các phần tử dữ liệu. Đó là sự khác biệt chính giữa ArrayList và LinkedList.

NỘI DUNG

1. Tổng quan và sự khác biệt chính
2. ArrayList là gì
3. LinkedList là gì
4. Điểm tương đồng giữa ArrayList và LinkedList
5. So sánh cạnh nhau - ArrayList vs LinkedList ở dạng bảng
6. Tóm tắt

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 bình 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, vì vậy lập trình viên có thể thêm các yếu tố vào danh sách. Lớp ArrayList mở rộng lớp AbstractList thực hiện giao diện List. Do đó, các phương thức của giao diện List có thể được ArrayList sử dụng. Để 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 dưới đây.

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 yếu tố khác có thể đượ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 sang phương thức remove, chữ cái trong chỉ mục thứ 4 là E E 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ẽ in.

LinkedList là gì?

Tương tự như ArrayList, LinkedList được sử dụng để lưu trữ các phần tử dữ liệu một cách linh hoạt. Một đối tượng được tạo bằ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, vì vậy lập trình viên có thể thêm các yếu tố vào danh sách. Nó sử dụng danh sách liên kết đôi để lưu trữ dữ liệu. Trong một danh sách liên kết đôi, 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à thực hiện giao diện List. Do đó, các phương thức của giao diện List có thể được LinkedList sử dụng. 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 dưới đây.

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 yếu tố khác có thể đượ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 sang phương thức remove, chữ cái trong chỉ mục thứ 4 là E E xóa sẽ bị xóa khỏi danh sách. Khi lặp bằng vòng lặp for, các chữ A, B, C và D sẽ in.

Điểm tương đồng giữa ArrayList và LinkedList là gì?

  • Cả ArrayList và LinkedList đều thực hiện giao diện List.
  • 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 vs LinkedList

ArrayList là một lớp mở rộng AbstractList và thực hiện giao diện List 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 các AbstractSequentialList và thực hiện các giao diện List, Deque, Queue, trong đó sử dụng một danh sách liên kết đôi để lưu trữ các phần tử dữ liệu.
 Yếu tố truy cập
Truy cập các phần tử của ArrayList nhanh hơn so với LinkedList. Truy cập các phần tử của LinkedList chậm hơn so với ArrayList.
Các yếu 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 so với ArrayList.
 Hành vi
ArrayList thực hiện như một Danh sách. LinkedList hoạt động như một Danh sách và Hàng đợi.

Tóm lược - ArrayList vs. Danh sách liên kết

Khung bộ sưu tậ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à bộ. Danh sách này là một giao diện của bộ sưu tập khung. 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à thực hiện giao diện List 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 các AbstractSequentialList và thực hiện các giao diện List, Deque, Queue, bên trong sử dụng một danh sách liên kết đôi để lưu trữ các phần tử dữ liệu. Đó là sự khác biệt giữa ArrayList và LinkedList.

Tài liệu tham khảo:

1.Giới thiệu Danh sách Liên kết | Hướng dẫn cấu trúc dữ liệu | Học tập Có sẵn ở đây
2. Danh sách liên kết của Java trong Java - javatpoint. Hiện, Điểm, Có sẵn ở đây
3. Lớp Java ArrayList - javatpoint. Điểm, có sẵn ở đây