Cả hai lớp ArrayList và LinkedList đều được implements từ giao tiếp List 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).
Có vài sự khác nhau giữa ArrayList và LinkedList được đưa ra như trong bảng dưới đây:
ArrayList | LinkedList |
---|
1) ArrayList nội bộ sử dụng mảng động để lưu trữ các phần tử. | LinkedList nội bộ sử dụng danh sách liên kết doubly để lưu trữ các phần tử. |
2) Thao tác với ArrayList là chậm bởi vì nó sử dụng nội bộ mảng. Nếu bất kỳ phần tử nào được xoá khỏi mảng, tất cả các bit được chuyển trong bộ nhớ. | Thao tác với LinkedList là nhanh hơn so với ArrayList bởi vì nó sử dụng danh sách liên kết doubly do đó không cần chuyển đổi bit nào trong bộ nhớ. |
3) Lớp ArrayList trong java chỉ có thể hoạt động như một list vì nó chỉ implements giao tiếp List. | Lớp LinkedList trong java có thể hoạt động như một list và queue(hàng đợi) vì nó implements các giao tiếp List và Deque. |
4) ArrayList là tốt hơn trong việc lưu trữ và truy cập dữ liệu. | LinkedList là tốt hơn trong việc thao tác dữ liệu. |
Ví dụ về ArrayList và LinkedList trong java
Dưới đây là ví dụ đơn giản về việc sử dụng ArrayList và LinkedList trong java
import java.util.ArrayList; |
import java.util.LinkedList; |
public class ArraylistAndLinkedListExample { |
public static void main(String args[]) { |
List<String> arrayList = new ArrayList<String>(); |
List<String> linkedList = new LinkedList<String>(); |
linkedList.add( "Hiberante" ); |
linkedList.add( "Struts2" ); |
linkedList.add( "Spring" ); |
linkedList.add( "Mybatis" ); |
System.out.println( "arraylist: " + arrayList); |
System.out.println( "linkedlist: " + linkedList); |
Output:
arraylist: [Java, C++, PHP, Python]
linkedlist: [Hiberante, Struts2, Spring, Mybatis]