LinkedList vs ArrayList trong Java: Biết những điểm khác biệt chính



Bài viết LinkedList vs ArrayList này sẽ cung cấp cho bạn một so sánh thích hợp giữa các danh sách triển khai giao diện danh sách

Danh sách trong Java là một giao diện con của cung cấp các giải pháp tối ưu với các khái niệm như truy cập vị trí, lặp lại, v.v. Trong bài viết này, tôi sẽ thảo luận về những khác biệt chính giữa giao diện danh sách LinkedList và ArrayList trong Java.

Dưới đây là các chủ đề được đề cập trong bài viết này:





Hãy bắt đầu nào!

LinkedList là gì?

Sau mảng , cấu trúc dữ liệu phổ biến thứ hai chắc chắn là . Danh sách được liên kết là một cấu trúc dữ liệu tuyến tính được cấu thành bởichuỗi các nút trong đó mỗi nút chứa một giá trị và mộtcon trỏđến nút tiếp theo trong chuỗi.Ngoài ra, tliên kết cuối cùng trong danh sách được liên kết trỏ đến null, cho biết phần cuối của chuỗi.Một phần tử trong danh sách liên kết được gọi là nút .Nút đầu tiên trong danh sách được gọi là cái đầu .Nút cuối cùng được gọi là đuôi .



Hãy để tôi cho bạn một ví dụ đơn giản về điều này: Hãy tưởng tượng một chuỗi các tờ giấy được liên kết với nhau. Bạn có thể dễ dàng thêm một chiếc kẹp giấy khác vào đầu hoặc cuối. Bạn cũng có thể dễ dàng chèn một cái vào giữa. Tất cả những gì bạn phải làm là bẻ sợi dây xích ở giữa, thêm một chiếc kẹp giấy mới, sau đó kết nối nửa còn lại. Một danh sách được liên kết tương tự như thế này.

Thí dụ:

package MyPackage import java.util.LinkedList import java.util.ListIterator public class linkedlist {public static void main (String args []) {/ * Khai báo Danh sách Liên kết * / LinkedListl_list = new LinkedList () / * add (String Item) là được sử dụng để thêm * các Mục vào danh sách liên kết * / l_list.add ('Java') l_list.add ('Python') l_list.add ('Scala') l_list.add ('Swift') System.out.println ( 'Nội dung danh sách được liên kết:' + l_list) / * Thêm mục ở vị trí đã chỉ định * / l_list.add (2, 'JavaScript') l_list.add (3, 'Kotlin') System.out.println ('l_list Nội dung sau khi chỉnh sửa: '+ l_list) / * Thêm Mục Đầu tiên và Cuối cùng * / l_list.addFirst (' Khóa học đầu tiên ') l_list.addLast (' Khóa học cuối cùng ') System.out.println (' l_list Nội dung sau khi thêm: '+ l_list) / * Nhận và đặt các Mục trong danh sách * / Object firstvar = l_list.get (0) System.out.println ('First Item:' + firstvar) l_list.set (0, 'Java9') System.out.println ('l_list Nội dung sau khi cập nhật Mục đầu tiên: '+ l_list) / * Xóa khỏi vị trí * / l_list.remove (1) l_list.remove (2) System.out.println ('Danh sách liên kết sau khi xóa Mục ở vị trí thứ 2 và 3' + l_list) / * Xóa Mục đầu tiên và cuối cùng * / l_list.removeFirst () l_list.removeLast () System.out.println ('Nội dung cuối cùng sau khi xóa Mục đầu tiên và cuối cùng : '+ l_list) / * Lặp lại danh sách được liên kết * / ListIteratoritrator = l_list.listIterator () System.out.println (' Danh sách được hiển thị bằng trình lặp: ') while (itrator.hasNext ()) {System.out.println (itrator .kế tiếp()) } } }

Đầu ra:



Nội dung danh sách được liên kết = {Java, Python, Scala, Swift} Nội dung sau khi chỉnh sửa = {Java, Python, JavaScript, Kotlin, Scala, Swift} Nội dung sau khi bổ sung = {First Course, Java, Python, JavaScript, Kotlin, Scala, Swift, Khóa học cuối cùng} Mục đầu tiên = {Khóa học đầu tiên} Nội dung sau khi cập nhật mục đầu tiên = {Java9, Java, Python, JavaScript, Kotlin, Scala, Swift, Khóa học cuối cùng} Nội dung sau khi xóa mục ở vị trí thứ 2 và 3 = {Java9, Python, Kotlin, Scala, Swift, Last Course} Nội dung cuối cùng sau khi xóa Mục đầu tiên và Mục cuối cùng = {Python, Kotlin, Scala, Swift} Danh sách được hiển thị bằng trình lặp = Python Kotlin Scala Swift

Bây giờ, hãy chuyển sang chủ đề tiếp theo.

ArrayList là gì?

là việc triển khai Giao diện danh sách nơi các phần tử có thể được thêm vào hoặc loại bỏ động khỏi danh sách tương ứng. Ở đây, kích thước của danh sách được tăng động nếu các phần tử được thêm vào nhiều hơn kích thước ban đầu hoặc thực tế. Mặc dù nó có thể chậm hơn các mảng tiêu chuẩn, nhưng nó có thể hữu ích trong các chương trình yêu cầu nhiều thao tác trong mảng.

độ dài của một mảng javascript

LinkedList-vs-ArrayList-in-Java-Edureka

ArrayList được sử dụng cho các mục đích sau:

  • ArrayList trong Java được sử dụng để cửa hàng một tập hợp các phần tử có kích thước động.
  • Nó được khởi tạo bởi một kích thước. Tuy nhiên, kích thước có thể tăng lên nếu bộ sưu tập lớn lên và thu nhỏ lại nếu các đối tượng bị xóa khỏi .
  • Ngoài ra, ArrayList cho phép bạn truy cập ngẫu nhiên vào danh sách.

Hãy để chúng tôi tiếp tục và chỉ ra những điểm tương đồng giữa LinkedList và ArrayList trong Java.

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

Đây là những điểm tương đồng đáng chú ý giữa LinkedList và ArrayList trong Java.

  • ArrayList và LinkedList là các triển khai của Giao diện danh sách .
  • Cả ArrayList và LinkedList đều duy trì thứ tự chèn của các phần tử. Điều này có nghĩa là, trong khi hiển thị các phần tử của Danh sách, tập kết quả sẽ có cùng thứ tự mà các phần tử được chèn vào Danh sách.
  • Các lớp ThisArrayList và LinkedList không được đồng bộ hóa và có thể được đồng bộ hóa một cách rõ ràng bằng cách sử dụng CollectionsSynchronizedList phương pháp.
  • Trình lặp và ListIterator được trả về bởi các lớp này là không nhanh. Điều này có nghĩa là, nếu danh sách được sửa đổi cấu trúc tại bất kỳ thời điểm nào sau khi trình lặp được tạo, ngoại trừloại bỏ hoặc thêm phương thức của chính trình lặp, trình lặp sẽ ném một ConcurrentModificationException .

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

Trước tiên, hãy xem các thông số để so sánh LinkedList và ArrayList trong Java.

Các thông số để so sánh LinkedList và ArrayList trong Java:

  • Hoạt động
  • Thực hiện
  • Quá trình
  • Ký ức
  1. Hoạt động

Các hoạt động chèn, thêm và loại bỏ một mục nhanh hơn trong một LinkedList bởi vì chúng tôi không cần thay đổi kích thước như chúng tôi làm trong Lập danh sách.

2. Thực hiện

lớp ẩn danh trong java là gì

Lập danh sách dựa trên khái niệm về một mảng có thể thay đổi kích thước động, trong khi LinkedList dựa trên việc triển khai danh sách liên kết kép

3. Quá trình

ĐẾN LinkedList lớp có thể được sử dụng như một danh sách và một hàng đợi vì nó triển khai các giao diện List và Deque trong khi ArrayList chỉ có thể triển khai các Danh sách.

Bốn. Ký ức

ĐẾN LinkedList tiêu thụ nhiều bộ nhớ hơn một Lập danh sách bởi vì mọi nút trong một LinkedList lưu trữ hai tham chiếu, trong khi Lập danh sách chỉ giữ dữ liệu và chỉ mục của nó

LinkedList so với ArrayList trong Java

Thông sốLinkedListLập danh sách
Hoạt động

Các thao tác chèn, thêm và xóa khá nhanh hơn

So sánh các hoạt độngở đây chậm

sự khác biệt giữa lớp trừu tượng và giao diện là gì
Thực hiện

Theo dõi triển khai danh sách được liên kết gấp đôi

Tuân theo khái niệm về mảng có thể thay đổi kích thước động

Quá trình

Một lớp LinkedList có thể là một danh sách và một hàng đợi vì nó triển khai các giao diện List và Deque

Một lớp ArrayList có thể là một danh sách vì nó chỉ triển khai các Danh sách

Ký ức

Mức tiêu thụ bộ nhớ trong LinkedList cao

Ít hơn so với LinkedList

Đó là tất cả mọi người! Điều này đưa chúng ta đến phần cuối của bài viết này về LinkedList vs ArrayList trong Java. Tôi hy vọng các bạn rõ ràng với những gì được dạy trong bài viết này.

Nếu bạn tìm thấy bài viết này về “LinkedList vs ArrayList trong Java”, hãy xem của Edureka, một công ty học trực tuyến đáng tin cậy với mạng lưới hơn 250.000 người học hài lòng trải dài trên toàn cầu. Chúng tôi ở đây để giúp bạn từng bước trong hành trình của bạn và chúng tôi đưa ra một chương trình giảng dạy được thiết kế cho sinh viên và các chuyên gia muốn trở thành một Nhà phát triển Java.