HashMap computeIfPresent() trong java với ví dụ cụ thể

HashMap computeIfPresent() cho phép update value nếu key được chỉ định chứa trong HashMap.

Syntax

public Object computeIfPresent?(Object key,
                              BiFunction remappingFunction)

Parameter:

  • key: Update value theo key được chỉ định
  • BiFuntion: Ánh xạ trả về giá trị của value mới.

Ví dụ

import java.util.HashMap;

public class Main {
    public static void main(String[] args) {

        // Creating an empty HashMap
        HashMap<Integer, String> hash_map = new HashMap<>();

        hash_map.put(1, "hga");
        hash_map.put(2, "zzz");
        hash_map.put(3, "sho");

        hash_map.computeIfPresent(2, (k , v) -> v.concat(" - update"));
        System.out.println(hash_map);

    }
}

Output: {1=hga, 2=zzz, 3=sho}

1, Nếu value được cập nhập thành null thì key sẽ bị xoá ra khởi HashMap.

import java.util.HashMap;

public class Main {
    public static void main(String[] args) {

        // Creating an empty HashMap
        HashMap<Integer, String> hash_map = new HashMap<>();

        hash_map.put(1, "hga");
        hash_map.put(2, "zzz");
        hash_map.put(3, "sho");

        hash_map.computeIfPresent(2, (k , v) -> null);
        System.out.println(hash_map);

    }
}

Output: {1=hga, 3=sho}

2, Mặc định compute sẽ thao tác trên value của key, nếu value hiện tại là null thì có thể gây ra NullpointerException

import java.util.HashMap;

public class Main {
    public static void main(String[] args) {

        // Creating an empty HashMap
        HashMap<Integer, String> hash_map = new HashMap<>();

        hash_map.put(1, null);
        hash_map.put(2, "asd");
        hash_map.put(3, "sho");
        hash_map.compute(1, (key, val) -> val.concat(" - update"));
        System.out.println(hash_map);

    }
}

Output: Exception in thread “main” java.lang.NullPointerException

Note: Sử dụng computeIfPresent() nếu bạn không chắc chắn key được chỉ định có chứa trong HashMap hay không.

Kết bài

Mọi người cố gắng làm hết để ôn lại các kiến thức trong lập trình hướng đối tượng nghen.

Nếu làm được hết các bài này thì cũng đừng có mừng vội, vì đây chỉ là những thứ rất rất căn bản. Nhưng hãy thoải moái vì mình đã hoàn thành những bài tập này, chuẩn bị cho những thứ ghê ghớm hơn ở đằng sau.

Mình ngồi giải những bài tập này cũng đuối quá. Nếu có gì không hiểu hoặc không biết làm, hoặc tìm thấy bug thì mail cho mình nhé. Email ở dưới cuối màn mình =). Thanks!

Các bài viết liên quan

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x