GP Coder

Trang chia sẻ kiến thức lập trình Java

  • Java Core
    • Basic Java
    • OOP
    • Exception Handling
    • Multi-Thread
    • Java I/O
    • Networking
    • Reflection
    • Collection
    • Java 8
  • Design pattern
    • Creational Pattern
    • Structuaral Pattern
    • Behavior Pattern
  • Web Service
    • SOAP
    • REST
  • JPA
  • Java library
    • Report
    • Json
    • Unit Test
  • Message Queue
    • ActiveMQ
    • RabbitMQ
  • All
Trang chủ Java Core Collection So sánh ArrayList và LinkedList trong Java

So sánh ArrayList và LinkedList trong Java

Đăng vào 12/11/2017 . Được đăng bởi GP Coder . 47729 Lượt xem . Toàn màn hình

Trong các bài viết trước, tôi đã giới thiệu với các bạn ArrayList và LinkedList. Trong bài này, tôi sẽ so sánh sự giống nhau, khác nhau của 2 collection này.

Nội dung

  • 1 Giống nhau giữa ArrayList và LinkedList
  • 2 Khác nhau giữa ArrayList và LinkedList

Giống nhau giữa ArrayList và LinkedList

Cả hai lớp ArrayList và LinkedList đều được implements từ List Interface và duy trì thứ tự của phần tử được thêm vào. Cả hai lớp này đều là lớp không đồng bộ (non-synchronized).

Khác nhau giữa ArrayList và LinkedList

ArrayListLinkedList
Cấu trúc dữ liệu (Structure)ArrayList sử dụng mảng động để lưu trữ các phần tử.LinkedList sử dụng danh sách liên kết (Doubly Linked List) để lưu trữ các phần tử.
ArrayList  là một cấu trúc dữ liệu dựa trên chỉ mục (index), trong đó mỗi phần tử (element) được liên kết với một chỉ mục.Các phần tử trong LinkedList được gọi là node, mỗi node cần lưu trữ 3 thông tin: tham chiếu phần tử trước nó, giá trị của phần tử và một tham chiếu tới phần tử kế tiếp.
Thao tác thêm và xóa (Insertion And Removal)Thao tác thêm và xóa phần tử với ArrayList là chậm bởi vì nó sử dụng nội bộ mảng. Bởi vì sau khi thêm hoặc xóa các phần tử cần sắp xếp lại.Thao tác thêm và xóa phần tử với LinkedList nhanh hơn ArrayList. Bởi vì nó không cần sắp xếp lại các phần tử sau khi thêm hoặc xóa. Nó chỉ cần cập nhật lại tham chiếu tới phần tử phía trước và sau nó.
Độ phức tạp: O(n).Độ phức tạp: O(1).
Thao tác tìm kiếm hoặc truy xuất phần tử (Retrieval)Truy xuất phần tử trong ArrayList nhanh hơn LinkedList. Bởi vì các phần tử trong ArrayList được lưu trữ dựa trên chỉ mục (index).Thao tác truy xuất phần tử trong LinkedList chậm hơn nhiều so với ArrayList. Bởi vì, nó phải duyệt qua lần lượt các phần tử từ đầu tiên cho đến cuối cùng.
Độ phức tạp:  O(1).Độ phức tạp:  O(n).
Truy xuất ngẫu nhiên (Random Access)ArrayList có thể truy xuất ngẫu nhiên phần tử.LinkedList không thể truy xuất ngẫu nhiên. Nó phải duyệt qua tất cả các phần tử từ đầu tiên đến phần tử cuối cùng để tìm phần tử.
Trường hợp sử dụng (Usage)ArrayList chỉ có thể hoạt động như một list vì nó chỉ implements giao tiếp List.LinkedList có thể hoạt động như một ArrayList, stack (hàng đợi), queue (hàng đợi), Singly Linked List and Doubly Linked List vì nó implements các giao tiếp List và Deque.
Sử dụng bộ nhớArrayList yêu cầu ít bộ nhớ hơn so với LinkedList. Bởi vì ArrayList chỉ lưu trữ dữ liệu (data) của nó và chỉ mục (index).LinkedList yêu cầu nhiều bộ nhớ hơn so với ArrayList. Bởi vì LinkedList lưu giữ thông tin của nó và tham chiếu tới phần tử trước và sau nó.
Khi nào sử dụng?ArrayList tốt hơn trong việc lưu trữ và truy xuất dữ liệu (get).LinkedList tốt hơn trong việc thao tác dữ liệu (thêm/ xóa).
4.7
32
Nếu bạn thấy hay thì hãy chia sẻ bài viết cho mọi người nhé! Và Donate tác giả

Shares

Chuyên mục: Collection Được gắn thẻ: Collection

LinkedList trong java
List Interface trong Java

Có thể bạn muốn xem:

  • Deque và ArrayDeque trong Java (23/11/2017)
  • Collection trong java (11/11/2017)
  • So sánh HashSet, LinkedHashSet và TreeSet trong Java (16/11/2017)
  • Lớp HashMap trong Java (17/11/2017)
  • Lớp Arrarys trong Java (Arrays Utility Class) (26/11/2017)

Bình luận

bình luận

Tìm kiếm

Bài viết mới

  • Clean code 13/01/2024
  • Giới thiệu CloudAMQP – Một RabbitMQ server trên Cloud 02/10/2020
  • Kết nối RabbitMQ sử dụng Web STOMP Plugin 19/06/2020
  • Sử dụng publisher confirm trong RabbitMQ 16/06/2020
  • Sử dụng Dead Letter Exchange trong RabbitMQ 13/06/2020

Xem nhiều

  • Hướng dẫn Java Design Pattern – Factory Method (98798 lượt xem)
  • Hướng dẫn Java Design Pattern – Singleton (98458 lượt xem)
  • Giới thiệu Design Patterns (89073 lượt xem)
  • Lập trình đa luồng trong Java (Java Multi-threading) (87269 lượt xem)
  • Giới thiệu về Stream API trong Java 8 (84622 lượt xem)

Nội dung bài viết

  • 1 Giống nhau giữa ArrayList và LinkedList
  • 2 Khác nhau giữa ArrayList và LinkedList

Lưu trữ

Thẻ đánh dấu

Annotation Authentication Basic Java Behavior Pattern Collection Creational Design Pattern Cấu trúc điều khiển Database Dependency Injection Design pattern Eclipse Exception Executor Service Google Guice Gson Hibernate How to Interceptor IO Jackson Java 8 Java Core JDBC JDK Jersey JMS JPA json JUnit JWT Message Queue Mockito Multithreading OOP PowerMockito RabbitMQ Reflection Report REST SOAP Structuaral Pattern Swagger Thread Pool Unit Test Webservice

Liên kết

  • Clean Code
  • JavaTpoint
  • Refactoring Guru
  • Source Making
  • TutorialsPoint
  • W3Schools Online Web Tutorials

Giới thiệu

GP Coder là trang web cá nhân, được thành lập với mục đích lưu trữ, chia sẽ kiến thức đã học và làm việc của tôi. Các bài viết trên trang này chủ yếu về ngôn ngữ Java và các công nghệ có liên quan đến Java như: Spring, JSF, Web Services, Unit Test, Hibernate, SQL, ...
Hi vọng góp được chút ít công sức cho sự phát triển cộng đồng Coder Việt.

Donate tác giả

Tìm kiếm các bài viết của GP Coder với Google Search

Liên hệ

Các bạn có thể liên hệ với tôi thông qua:
  • Trang liên hệ
  • Linkedin: gpcoder
  • Email: contact@gpcoder.com
  • Skype: ptgiang56it

Follow me

Copyright 2025 © GP Coder · All Rights Reserved · Giới thiệu · Chính sách · Điều khoản · Liên hệ ·

Share

Blogger
Delicious
Digg
Email
Facebook
Facebook messenger
Flipboard
Google
Hacker News
Line
LinkedIn
Mastodon
Mix
Odnoklassniki
PDF
Pinterest
Pocket
Print
Reddit
Renren
Short link
SMS
Skype
Telegram
Tumblr
Twitter
VKontakte
wechat
Weibo
WhatsApp
X
Xing
Yahoo! Mail

Copy short link

Copy link