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

HashMap compute() trong java cho phép bạn update các value trong HashMap. compute() sẽ update value của key được chỉ định theo function remapping.

Syntax

public V computeIfPresent(K key, BiFunction<? super K, ? super V, ? extends V> remappingFunction);

Parameter:

  • key: cập nhật value của key được chỉ định
  • Bifuntion: Trả về value mới key.

Ví dụ: Nối chuỗi “update” vào key 1

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, "asd");
        hash_map.put(3, "sho");
        hash_map.compute(1, (key, val) -> val.concat(" - update"));
        System.out.println(hash_map);

    }
}

Output{1=hga – update, 2=asd, 3=sho}

Note:

1 – Nếu value được update thành null thì phần tử có key được chỉ định sẽ bị xoá 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, "asd");
        hash_map.put(3, "sho");
        hash_map.compute(1, (key, val) -> null);
        System.out.println(hash_map);

    }
}

Output {2=asd, 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

3, Nếu key được chỉ định không chứa trong HashMap sẽ 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(4, (key, val) -> val.concat(" - update"));
        System.out.println(hash_map);

    }
}

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

Note: Các bạn chỉ nên dùng compute() khi bạn chắc rằng key đó chứa trong HashMap nếu không thì sẽ gây ra các exception không đáng có.

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