Collections মধ্যম

বহু-ধাপের 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
কঠিনতা
মধ্যম
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-ও এড়ায়।