Như đã đề cập trong câu trả lời khác: Phương pháp sẽ luôn được giữ để tương thích ngược, ngay cả khi có phương pháp mới, mạnh mẽ hơn được giới thiệu.
Liên quan đến trường hợp sử dụng cho computeIfPresent
: Có thể khó tìm được một ví dụ đủ nhỏ để không bị giả tạo và vẫn thuyết phục. Nói chung, ý định của phương pháp này là để cập nhật giá trị hiện tại dưới mọi hình thức.
Một ví dụ có thể là (giới hạn) số từ: Đối với một tập hợp các từ nhất định, một cửa hàng có số lượng ban đầu là 0
trong bản đồ. Sau đó, một chuỗi các từ được xử lý: Bất cứ khi nào người ta tìm thấy một từ từ tập đầu tiên, số lượng của nó được tăng 1:
import java.util.LinkedHashMap;
import java.util.Map;
public class ComputeIfPresentExample
{
public static void main(String[] args)
{
Map<String, Integer> wordCounts = new LinkedHashMap<String, Integer>();
String s =
"Lorem ipsum dolor sit amet consetetur iam nonumy sadipscing " +
"elitr, sed diam nonumy eirmod tempor invidunt ut erat sed " +
"labore et dolore magna dolor sit amet aliquyam erat sed diam";
wordCounts.put("sed", 0);
wordCounts.put("erat", 0);
for (String t : s.split(" "))
{
wordCounts.computeIfPresent(t, (k,v) -> v+1);
}
System.out.println(wordCounts);
}
}
(Tất nhiên, mọi thứ như thế này có thể được giải quyết khác nhau, nhưng đây là một thay công việc thường xuyên trong một hoặc hình thức khác, và phương pháp mới cho phép một giải pháp khá súc tích và thanh lịch)
@thriller ohh tôi biết nó có được khả năng tương thích ngược. câu hỏi của tôi là lý do duy nhất? và cũng có thể sử dụng computeIfPresent. – veritas