Java computeIfPresent()

Java computeIfPresent() - Tìm hiểu và ứng dụng

Trong ngôn ngữ lập trình Java, phương thức computeIfPresent() là một phần của lớp Map, được giới thiệu từ phiên bản Java 8. Phương thức này cho phép bạn cập nhật giá trị của một khóa nếu khóa đó đã tồn tại trong bản đồ (map). Nó rất hữu ích trong các tình huống khi bạn muốn thực hiện một số thao tác tính toán trên giá trị hiện tại của khóa đó.

Định nghĩa

Phương thức computeIfPresent() có cú pháp như sau:

V computeIfPresent(K key, BiFunction remappingFunction)

Trong đó:

  • K key: Khóa mà bạn muốn kiểm tra và có thể cập nhật.
  • BiFunction remappingFunction: Một hàm xử lý, nhận vào khóa và giá trị hiện tại liên quan đến khóa đó, và trả về giá trị mới.

Nếu khóa không tồn tại trong bản đồ, phương thức này sẽ không làm gì cả và trả về null. Ngược lại, nếu khóa tồn tại, nó sẽ tính toán giá trị mới và cập nhật vào bản đồ.

Cú pháp

Cú pháp cụ thể của phương thức computeIfPresent có thể được mô tả như sau:

map.computeIfPresent(key, (k, v) -> {
    // Tính toán giá trị mới từ khóa k và giá trị v
});

Ví dụ

Dưới đây là một ví dụ đơn giản để minh họa cách sử dụng phương thức computeIfPresent():

import java.util.HashMap;
import java.util.Map;

public class Main {
    public static void main(String[] args) {
        Map map = new HashMap<>();
        map.put("Một", 1);
        map.put("Hai", 2);
        map.put("Ba", 3);

        // Sử dụng computeIfPresent để cập nhật giá trị của "Hai"
        map.computeIfPresent("Hai", (key, value) -> value + 3);

        // In ra bản đồ sau khi cập nhật
        System.out.println(map); // Kết quả: {Một=1, Hai=5, Ba=3}

        // Thử gọi computeIfPresent với khóa không tồn tại
        map.computeIfPresent("Bốn", (key, value) -> value + 1);

        // In ra bản đồ sau khi thử cập nhật khóa không tồn tại
        System.out.println(map); // Kết quả: {Một=1, Hai=5, Ba=3}
    }
}

Trong ví dụ trên, chúng ta đã tạo một bản đồ với một số khóa và giá trị. Khi gọi computeIfPresent() với khóa "Hai", giá trị 2 đã được cập nhật lên 5. Khi gọi computeIfPresent() với khóa "Bốn", không có thay đổi nào xảy ra vì khóa này không tồn tại trong bản đồ.

Kết luận

Phương thức computeIfPresent() trong Java là một công cụ mạnh mẽ để xử lý và cập nhật giá trị của các phần tử trong bản đồ một cách hiệu quả. Bằng cách sử dụng phương thức này, bạn có thể thực hiện các thao tác tính toán gần như ngay lập tức mà không cần phải kiểm tra sự tồn tại của khóa trước đó, giúp đơn giản hóa mã nguồn và tăng hiệu suất.