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