Java HashMap computeIfPresent ()

Phương thức Java HashMap computeIfPresent () 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 đã có trong bản đồ băm.

Cú pháp của computeIfPresent()phương thức là:

 hashmap.computeIfPresent(K key, BiFunction remappingFunction)

Ở đây, hashmap là một đối tượng của HashMaplớp.

Tham số computeIfPresent ()

Các computeIfPresent()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 ý : RemappingFunction có thể có hai đối số. Do đó, được coi là BiFunction.

computeIfPresent () Giá trị trả lại

  • trả về giá trị mới được liên kết với khóa được chỉ định
  • trả về nullnế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 computeIfPresent ()

 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); // recompute the value of Shoes with 10% VAT int shoesPrice = prices.computeIfPresent("Shoes", (key, value) -> value + value * 10/100); System.out.println("Price of Shoes after VAT: " + shoesPrice); // print updated HashMap System.out.println("Updated HashMap: " + prices); ) )

Đầu ra

 HashMap: (Pant = 150, Bag = 300, Shoes = 200) Giá giày sau VAT: 220 Bản đồ HashMap cập nhật: (Pant = 150, Bag = 300, Shoes = 220))

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.computeIfPresent("Shoes", (key, value) -> value + value * 10/100)

Đây,

  • (key, value) -> value + value * 10/100 là một biểu thức lambda. Nó tính toán giá trị mới của Giày và trả về giá trị đó. Để tìm hiểu thêm về biểu thức lambda, hãy truy cập Biểu thức Lambda của Java.
  • price.computeIfPresent () liên kết giá trị mới được trả về bởi biểu thức lambda với ánh xạ cho Giày. Điều này chỉ có thể xảy ra vì Giày đã được ánh xạ tới một giá trị trong bản đồ băm.

Ở đây, biểu thức lambda hoạt động như một hàm ánh xạ lại. Và, nó có hai tham số.

Lưu ý : Chúng tôi không thể sử dụng computeIfPresent()phương pháp này nếu khóa không có trong bản đồ băm.

Đọc đề xuất

  • HashMap compute () - tính giá trị cho khóa được chỉ định
  • HashMap computeIfAbsent () - tính toán giá trị nếu khóa được chỉ định không được ánh xạ tới bất kỳ giá trị nào
  • Java HashMap merge () - thực hiện tác vụ tương tự như compute()

thú vị bài viết...