compute এবং merge দিয়ে অ্যাটমিক map আপডেট
বহু-ধাপের map lookup এবং mutation-কে computeIfAbsent(), compute(), ও merge() দিয়ে প্রতিস্থাপন করুন।
কোড তুলনা
✕ Manual lookup and update
List<String> values = groups.get(key);
if (values == null) {
values = new ArrayList<>();
groups.put(key, values);
}
values.add(value);
✓ Java 8+
groups.computeIfAbsent(key, ignored -> new ArrayList<>())
.add(value);
এই কোডে সমস্যা দেখছেন? আমাদের জানান।
কেন আধুনিক পদ্ধতি ভালো
কম lookup
একই key বারবার অ্যাক্সেস করা এড়িয়ে যায়।
উন্নত কনকারেন্সি সেমান্টিক্স
Concurrent map সমর্থিত আপডেটগুলো অ্যাটমিকভাবে সম্পন্ন করতে পারে।
স্পষ্ট উদ্দেশ্য
initialization-এর নিয়মটি access-এর পাশেই দেখা যায়।
পুরনো পদ্ধতি
get() + null চেক + put()
আধুনিক পদ্ধতি
computeIfAbsent()
JDK থেকে
8
কঠিনতা
মধ্যম
JDK সমর্থন
compute এবং merge দিয়ে অ্যাটমিক map আপডেট
উপলব্ধ
JDK 8 (মার্চ 2014) থেকে ব্যাপকভাবে উপলব্ধ
কীভাবে কাজ করে
Map computation মেথড lookup এবং update-এর উদ্দেশ্যকে একটি অপারেশনে একত্র করে। lazy initialization-এর জন্য computeIfAbsent(), নতুন value বিদ্যমান value-এর ওপর নির্ভর করলে compute(), এবং সরবরাহ করা value-কে map-এ আগে থাকা value-এর সঙ্গে একত্র করতে merge() ব্যবহার করুন। concurrent map implementation-এ সমর্থিত computationগুলো আলাদা get() ও put() কলের কারণে হওয়া race-ও এড়ায়।
সম্পর্কিত ডকুমেন্টেশন
প্রমাণ