Danh sách liên kết Java
Danh sách liên kết Java
Trong chương trước, bạn đã tìm hiểu về lớp ArrayList
. Lớp LinkedList
gần giống với ArrayList
:
Ví dụ
// Import the LinkedList class import java.util.LinkedList; public class Main { public static void main(String[] args) { LinkedList<String> cars = new LinkedList<String>(); cars.add("Volvo"); cars.add("BMW"); cars.add("Ford"); cars.add("Mazda"); System.out.println(cars); } }
ArrayList so với LinkedList
Lớp LinkedList
là một bộ sưu tập có thể chứa nhiều đối tượng cùng loại, giống như ArrayList
.
Lớp LinkedList
có tất cả các phương thức giống như lớp ArrayList
vì cả hai đều triển khai giao diện List
. Điều này có nghĩa là bạn có thể thêm mục, thay đổi mục, xóa mục và xóa danh sách theo cách tương tự.
Tuy nhiên, mặc dù lớp ArrayList
và lớp LinkedList
có thể được sử dụng theo cùng một cách nhưng chúng được xây dựng rất khác nhau.
Cách hoạt động của ArrayList
Lớp ArrayList
có một mảng thông thường bên trong nó. Khi một phần tử được thêm vào, nó sẽ được đặt vào mảng. Nếu mảng không đủ lớn, một mảng mới lớn hơn sẽ được tạo để thay thế mảng cũ và mảng cũ sẽ bị loại bỏ.
Cách hoạt động của LinkedList
LinkedList
lưu trữ các mục của nó trong "thùng chứa". Danh sách có liên kết đến vùng chứa đầu tiên và mỗi vùng chứa có một liên kết đến vùng chứa tiếp theo trong danh sách. Để thêm một phần tử vào danh sách, phần tử đó được đặt vào một vùng chứa mới và vùng chứa đó được liên kết với một trong các vùng chứa khác trong danh sách.
Khi nào nên sử dụng
Sử dụng ArrayList
để lưu trữ và truy cập dữ liệu và LinkedList
để thao tác dữ liệu.
Các phương thức danh sách liên kết
Trong nhiều trường hợp, ArrayList
hiệu quả hơn vì thông thường cần truy cập vào các mục ngẫu nhiên trong danh sách, nhưng LinkedList
cung cấp một số phương pháp để thực hiện một số thao tác nhất định hiệu quả hơn:
Method | Description | Try it |
---|---|---|
addFirst() | Adds an item to the beginning of the list. | Try it » |
addLast() | Add an item to the end of the list | Try it » |
removeFirst() | Remove an item from the beginning of the list. | Try it » |
removeLast() | Remove an item from the end of the list | Try it » |
getFirst() | Get the item at the beginning of the list | Try it » |
getLast() | Get the item at the end of the list | Try it » |