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

Tác Giả: Laura McKinney
Ngày Sáng TạO: 3 Tháng Tư 2021
CậP NhậT Ngày Tháng: 10 Có Thể 2024
Anonim
Sự khác biệt giữa ArrayList và LinkedList trong Java - Công Nghệ
Sự khác biệt giữa ArrayList và LinkedList trong Java - Công Nghệ

NộI Dung


ArrayList và LinkedList là Bộ sưu tập các lớp và cả hai đều thực hiện Danh sách giao diện. Lớp ArrayList tạo danh sách được lưu trữ bên trong trong một năng động mảng tăng hoặc giảm kích thước khi các yếu tố được thêm hoặc xóa khỏi nó. LinkedList cũng tạo danh sách được lưu trữ nội bộ trong một Chắc chắn Liên kết Danh sách. Cả hai lớp được sử dụng để lưu trữ các phần tử trong danh sách, nhưng sự khác biệt chính giữa cả hai lớp ArrayList và LinkedList là Lập danh sách cho phép truy cập ngẫu nhiên vào các phần tử trong danh sách khi nó hoạt động trên một dựa trên chỉ số cấu trúc dữ liệu. Mặt khác, Danh sách liên kết không cho phép truy cập ngẫu nhiên vì nó không có chỉ mục để truy cập các phần tử trực tiếp, nó phải đi qua danh sách để truy xuất hoặc truy cập một phần tử từ danh sách.


Chúng ta hãy thảo luận thêm một số khác biệt giữa ArrayList và LinkedList với sự trợ giúp của biểu đồ so sánh được hiển thị bên dưới.

  1. Biểu đồ so sánh
  2. Định nghĩa
  3. Sự khác biệt chính
  4. Phần kết luận

Biểu đồ so sánh

Cơ sở để so sánhLập danh sáchDanh sách liên kết
Căn bản ArrayList cho phép truy cập ngẫu nhiên vào các thành phần trong danh sách.LinkedList không cho phép truy cập ngẫu nhiên vào các thành phần trong danh sách.
Cấu trúc dữ liệuCấu trúc bên trong được sử dụng để lưu trữ các phần tử là mảng động.Cấu trúc bên trong được sử dụng để lưu trữ các phần tử là danh sách liên kết đôi.
Mở rộngArrayList mở rộng lớp AbstarctList.LinkedList mở rộng AbstractSequentialList.
Thực hiệnAbstractList thực hiện giao diện List.LinkedList thực hiện Danh sách, Deque, Queue.
Truy cập Truy cập vào các phần tử trong danh sách nhanh hơn trong ArrayList.Truy cập vào các phần tử trong danh sách chậm hơn trong LinkedList.
Thao tácThao tác với các phần tử trong danh sách chậm hơn trong ArrayList.Thao tác với các thành phần trong danh sách nhanh hơn trong LinkedList.
Hành viArraylList hoạt động như List khi nó thực hiện danh sách.LinkedList hoạt động như Danh sách cũng như Hàng đợi khi nó thực hiện Danh sách và Hàng đợi cả hai.


Định nghĩa của ArrayList

Các Tóm tắt lớp được định nghĩa bởi Bộ sưu tập Khung. Nó kéo dài Danh sách sao và thực hiện Danh sách giao diện. ArrayList sử dụng mảng động tức là mảng có độ dài thay đổi dưới dạng cấu trúc dữ liệu nội bộ để lưu trữ các phần tử trong danh sách. Sự cần thiết của ArrayList phát sinh khi mảng trong java có độ dài cố định. Vì vậy, nó không thể tăng hoặc thu nhỏ kích thước khi các phần tử được thêm hoặc xóa khỏi mảng. Vì vậy, bạn phải biết kích thước của mảng yêu cầu trước. Nhưng danh sách mảng được triển khai bằng lớp ArrayList có thể tăng và thu nhỏ kích thước khi các phần tử được thêm hoặc xóa khỏi mảng.

Danh sách mảng được triển khai bằng ArrayList có thể được truy cập ngẫu nhiên vì ArrayList hoạt động trên cơ sở chỉ mục. Vì vậy, biết chỉ số, bạn có thể truy cập trực tiếp vào danh sách. Có ba hàm tạo của ArrayList:

ArrayList () ArrayList (Bộ sưu tập <? Extends E> c) ArrayList (int dung lượng)

Các Đầu tiên constructor thực hiện một danh sách mảng trống. Các thứ hai constructor thực hiện một danh sách mảng được khởi tạo bằng cách sử dụng Bộ sưu tập c các yếu tố. Các thứ ba constructor thực hiện danh sách mảng với sức chứa được cung cấp trong các đối số. Làm việc với ArrayList, đôi khi bạn sẽ yêu cầu chuyển đổi Collection ArrayList thành một mảng. Nó có thể được thực hiện bằng cách gọi toArray ().

Định nghĩa của LinkedList

Giống như ArrayList, Danh sách liên kết cũng là một Bộ sưu tập sử dụng lớp danh sách liên kết đôi như một cấu trúc dữ liệu nội bộ để lưu trữ các yếu tố trong danh sách. Lớp LinkedList mở rộng Tóm tắtSequentialList và thực hiện Danh sách, DequeXếp hàng giao diện. Danh sách liên kết được triển khai bằng LinkedList không thể được truy cập ngẫu nhiên. Nếu bạn muốn lấy bất kỳ phần tử nào từ danh sách, bạn phải lặp lại danh sách để tìm kiếm phần tử đó.

Có hai hàm tạo trong lớp LinkedList.

LinkedList () LinkedList (Bộ sưu tập <? Extends E> c)

Các Đầu tiên constructor tạo một danh sách liên kết trống. Các thứ hai constructor tạo một danh sách liên kết, khởi tạo với các phần tử của Bộ sưu tập c.

Trong LinkedList, thao tác của danh sách rất dễ dàng và nhanh chóng. Điều này là do nếu bạn thêm hoặc xóa bất kỳ phần tử nào trong danh sách, thì không cần phải dịch chuyển các phần tử như trong ArrayList. Nhưng việc truy cập chậm hơn vì nó không có chỉ mục để truy cập trực tiếp vào các yếu tố.

  1. Danh sách được thực hiện bởi ArrayList có thể được truy cập ngẫu nhiên vì ArrayList chấp nhận cấu trúc dữ liệu dựa trên chỉ mục của mảng. Mặt khác, danh sách được LinkedList triển khai có thể được truy cập ngẫu nhiên bởi vì để truy xuất hoặc truy cập một phần tử cụ thể trong danh sách bạn phải duyệt qua danh sách.
  2. Cấu trúc dữ liệu nội bộ được ArrayList sử dụng để lưu trữ các phần tử của danh sách là một mảng động có thể tăng hoặc thu hẹp khi các thành phần được thêm hoặc xóa khỏi danh sách. Tuy nhiên, cấu trúc dữ liệu nội bộ được LinkedList sử dụng để lưu trữ các phần tử trong danh sách là danh sách liên kết đôi.
  3. ArrayList mở rộng Tóm tắt lớp cũng là lớp Collection trong khi đó, lớp LinkedList mở rộng Tóm tắtSequentialList lớp đó lại là một lớp Collection.
  4. Lớp ArrayList thực hiện Danh sách giao diện trong khi đó, lớp LinkedList thực hiện Danh sách, Xếp hàngDeque giao diện.
  5. Truy cập các phần tử từ danh sách được triển khai bằng ArrayList là nhanh hơn vì nó có cấu trúc dữ liệu dựa trên chỉ mục. Mặt khác, không có cấu trúc dựa trên chỉ mục trong danh sách được thực hiện bởiLinkledList. Do đó, một trình vòng lặp được áp dụng trong danh sách để tiếp cận phần tử được truy cập, điều này giúp truy cập chậm hơn trong LinkedList.
  6. Thao tác là Thao tác trong danh sách được triển khai bằng ArrayList vì bất cứ khi nào một phần tử được thêm hoặc xóa khỏi danh sách, các phần tử trong danh sách sẽ được thay đổi để phù hợp với sự thay đổi. Mặt khác, thao tác nhanh hơn trong danh sách được LinkedList triển khai vì nó không yêu cầu thay đổi các phần tử trong danh sách khi thêm hoặc xóa các phần tử khỏi danh sách.
  7. ArrayList hoạt động như một danh sách vì nó thực hiện giao diện List trong khi đó, LinkedList hoạt động như danh sáchxếp hàng vì nó thực hiện Danh sách và Hàng đợi cả.

Phần kết luận:

Khi có sự bổ sung hoặc xóa thường xuyên các thành phần trong danh sách, LinkedList phải được sử dụng vì nó hoạt động tốt hơn trong quá trình thao tác. Nếu tìm kiếm thường xuyên được áp dụng cho danh sách, ArrayList là lựa chọn tốt nhất, vì nó hoạt động tốt hơn trong khi truy cập các phần tử từ danh sách.