LinkedHashMap trong Java là gì?
Lớp LinkedHashMap của khung Bộ sưu tập là cách triển khai Hashtable và LinkedList của giao diện Bản đồ . Nó lưu trữ các mục của nó trong Hashtable và sử dụng danh sách liên kết đôi bên trong để duy trì thứ tự chèn. LinkedList này xác định thứ tự chèn là thứ tự các khóa được chèn vào Map . HashMap mang lại lợi ích cho việc chèn , tìm kiếm và xóa nhanh chóng nhưng trong LinkedHashMap việc triển khai LinkedList cũng duy trì thứ tự chèn .
Các tính năng của LinkedHashMap
- Nó chứa các giá trị dựa trên khóa.
- Nó chứa các yếu tố độc đáo.
- Nó có thể có một khóa null và nhiều giá trị null.
- Nó không được đồng bộ hóa.
- Nó duy trì thứ tự chèn khiến cho việc lặp lại tốn kém hơn.
Yếu tố hiệu suất
Hiệu suất của LinkedHashMap chủ yếu phụ thuộc vào hai yếu tố được mô tả bên dưới.Dung tích
Dung lượng có nghĩa là số lượng mục nó có thể lưu trữ. Dung lượng mặc định là 16 nếu không cung cấp tham số. Hệ số tải Hệ số tải có nghĩa là bất cứ khi nào HashMap được điền vào một tỷ lệ phần trăm cụ thể được cung cấp dưới dạng tham số, HashMap mới sẽ được tạo có kích thước gấp đôi và tất cả các mục được chuyển sang mục mới này. Hệ số tải mặc định cho HashMap là 0,75 . Nó còn được gọi là tỷ lệ lấp đầy .Tuyên bố của LinkedHashMap
Để tạo LinkedHashMap , trước tiên, chúng ta cần nhập gói java.util.LinkedHashMap .LinkedHashMap<Key, Value> lhm = new LinkedHashMap<>(12, 0.5f);
Ở đây Key là loại chìa khóa có trong bản đồ. Giá trị là loại giá trị được ánh xạ trong bản đồ. 12 là dung lượng có nghĩa là nó sẽ lưu trữ 12 mục trên bản đồ. 0,5f là hệ số tải, nghĩa là khi được điền 50% thì nó sẽ tạo Bản đồ mới và di chuyển tất cả các giá trị sang bản đồ mới này.
Các phương pháp phổ biến của LinkedHashMap
Dưới đây là danh sách một số phương thức phổ biến của LinkedHashMap .phương pháp | Sự miêu tả |
---|---|
thông thoáng() | Xóa tất cả ánh xạ trong bản đồ. |
chứaValue(Giá trị đối tượng) | Trả về true nếu bản đồ ánh xạ khóa tới giá trị đã chỉ định. |
mục nhập() | Trả về chế độ xem Đặt của ánh xạ trong bản đồ. |
get(Khóa đối tượng) | Trả về giá trị đối với khóa được chỉ định hoặc null nếu không có khóa nào được chỉ định. |
bộ chìa khoá() | Trả về chế độ xem Đặt các phím trong bản đồ. |
giá trị() | Trả về chế độ xem Bộ sưu tập của các giá trị trong bản đồ. |
getOrDefault(Khóa đối tượng, V defaultValue) | Trả về giá trị mà khóa đã chỉ định được liên kết hoặc defaultValue nếu không có khóa nào được liên kết. |
Ví dụ về LinkedHasMap
import java.util.LinkedHashMap;
class Main {
public static void main(String[] args) {
// Creating a LinkedHashMap of odd numbers
LinkedHashMap<String, Integer> oddNumbers = new LinkedHashMap<>();
// Using the put() method
oddNumbers.put("One", 1);
oddNumbers.put("Three", 3);
System.out.println("LinkedHashMap1: " + oddNumbers);
// Creating another LinkedHashMap
LinkedHashMap<String, Integer> numbers = new LinkedHashMap<>();
numbers.put("Two", 2);
// Using putAll() method
numbers.putAll(oddNumbers);
System.out.println("LinkedHashMap2: " + numbers);
// Using entrySet() method
System.out.println("Key/Value mappings: " + numbers.entrySet());
// Using keySet() method
System.out.println("Keys: " + numbers.keySet());
// Using values() method
System.out.println("Values: " + numbers.values());
// Using get() method
int value1 = numbers.get("Three");
System.out.println("Returned Number: " + value1);
// Using getOrDefault() method
int value2 = numbers.getOrDefault("Five", 5);
System.out.println("Returned Number: " + value2);
// Using remove() method
int value = numbers.remove("Two");
System.out.println("Removed value: " + value);
// Using entrySet() method
System.out.println("Key/Value mappings: " + numbers.entrySet());
}
}
đầu ra
LinkedHashMap1: {Một=1, Ba=3}
LinkedHashMap2: {Hai=2, Một=1, Ba=3}
Ánh xạ khóa/giá trị: [Hai=2, Một=1, Ba=3]
Phím: [Hai, Một, Ba]
Giá trị: [2, 1, 3]
Số trả về: 3
Số trả về: 5
Giá trị đã xóa: 2
Ánh xạ khóa/giá trị: [Một=1, Ba=3]
LinkedHashMap so với HashMap
Chúng ta hãy xem một số khác biệt giữa chúng, trong khi cả hai đều triển khai giao diện Bản đồ .- LinkedHashMap duy trì thứ tự chèn khi nó triển khai danh sách liên kết đôi bên trong.
- LinkedHashMap cần nhiều bộ nhớ hơn khi triển khai LinkedList .
- Về hiệu suất, LinkedHashMap chậm hơn HashMap .
GO TO FULL VERSION