Phương thức Java HashMap computeIfAbsent () tính toán một giá trị mới và liên kết nó với khóa được chỉ định nếu khóa không được liên kết với bất kỳ giá trị nào trong bản đồ băm.
Cú pháp của computeIfAbsent()
phương thức là:
hashmap.computeIfAbsent(K key, Function remappingFunction)
Ở đây, hashmap là một đối tượng của HashMap
lớp.
Tham số computeIfAbsent ()
Các computeIfAbsent()
phương pháp có 2 thông số:
- key - khóa mà giá trị đã tính được liên kết với
- remappingFunction - hàm tính toán giá trị mới cho khóa được chỉ định
Lưu ý : Hàm ánh xạ không thể nhận hai đối số.
computeIfAbsent () Giá trị trả lại
- trả về giá trị mới hoặc cũ được liên kết với khóa được chỉ định
- trả về
null
nếu không có giá trị nào được liên kết với khóa
Lưu ý : Nếu kết quả remappingFunction null
, thì ánh xạ cho khóa được chỉ định sẽ bị loại bỏ.
Ví dụ 1: Java HashMap computeIfAbsent ()
import java.util.HashMap; class Main ( public static void main(String() args) ( // create an HashMap HashMap prices = new HashMap(); // insert entries to the HashMap prices.put("Shoes", 200); prices.put("Bag", 300); prices.put("Pant", 150); System.out.println("HashMap: " + prices); // compute the value of Shirt int shirtPrice = prices.computeIfAbsent("Shirt", key -> 280); System.out.println("Price of Shirt: " + shirtPrice); // print updated HashMap System.out.println("Updated HashMap: " + prices); ) )
Đầu ra
HashMap: (Quần = 150, Túi = 300, Giày = 200) Giá áo: 280 Bản đồ Hash được cập nhật: (Quần = 150, Áo = 280, Túi = 300, Giày = 200)
Trong ví dụ trên, chúng tôi đã tạo một bản đồ băm có tên là giá. Chú ý biểu thức,
prices.computeIfAbsent("Shirt", key -> 280)
Đây,
- key -> 280 là một biểu thức lambda. Nó trả về giá trị 280. Để tìm hiểu thêm về biểu thức lambda, hãy truy cập Java Lambda Expressions.
- price.computeIfAbsent () liên kết giá trị mới được trả về bởi biểu thức lambda với ánh xạ cho Shirt. Điều này chỉ có thể xảy ra vì Áo sơ mi chưa được ánh xạ tới bất kỳ giá trị nào trong bản đồ băm.
Ví dụ 2: computeIfAbsent () nếu khóa đã có mặt
import java.util.HashMap; class Main ( public static void main(String() args) ( // create an HashMap HashMap prices = new HashMap(); // insert entries to the HashMap prices.put("Shoes", 180); prices.put("Bag", 300); prices.put("Pant", 150); System.out.println("HashMap: " + prices); // mapping for Shoes is already present // new value for Shoes is not computed int shoePrice = prices.computeIfAbsent("Shoes", (key) -> 280); System.out.println("Price of Shoes: " + shoePrice); // print updated HashMap System.out.println("Updated HashMap: " + prices); ) )
Đầu ra
HashMap: (Pant = 150, Bag = 300, Shoes = 180) Giá giày: 180 Cập nhật HashMap: (Pant = 150, Bag = 300, Shoes = 180)
Trong ví dụ trên, ánh xạ cho Giày đã có trong bản đồ băm. Do đó, computeIfAbsent()
phương pháp này không tính giá trị mới cho Giày.
Đọc đề xuất
- HashMap compute () - tính giá trị cho khóa được chỉ định
- HashMap computeIfPresent () - tính toán giá trị nếu khóa được chỉ định đã được ánh xạ tới một giá trị
- Java HashMap merge () - thực hiện tác vụ tương tự như
compute()