Kotlin:
এসোসিয়েটিভ অ্যারের ব্যবহার
কিভাবে:
কোটলিনে একটি ম্যাপ তৈরি এবং ব্যবহার করা সোজা। এখানে কিভাবে করবেন তার একটি দ্রুত নির্দেশিকা দেওয়া হল:
fun main() {
// মিউটেবল ম্যাপ তৈরি
val fruits = mutableMapOf("a" to "Apple", "b" to "Banana")
// উপাদান যোগ করা
fruits["o"] = "Orange" // ইন্ডেক্সিং অপারেশন ব্যবহার করে
fruits.put("g", "Grape") // পুট মেথড ব্যবহার করে
// উপাদান অ্যাক্সেস করা
println(fruits["a"]) // আউটপুট: Apple
println(fruits["b"]) // আউটপুট: Banana
// উপাদান মুছে ফেলা
fruits.remove("b")
// ম্যাপের উপর ইটারেশন করা
for ((key, value) in fruits) {
println("$key -> $value")
}
// নমুনা আউটপুট:
// a -> Apple
// o -> Orange
// g -> Grape
}
গভীরে ডুব দেওয়া
কোটলিনের ম্যাপস সরাসরি এর জাভা সঙ্গে সমজাতীয়তা থেকে আসে, যেখানে ম্যাপস সংগ্রহের এক অপরিহার্য অংশ। তবে, কোটলিন তাদের ব্যবহার্যতা বৃদ্ধি করে মিউটেবল (MutableMap
) এবং রিড-অনলি (Map
) ইন্টারফেস প্রদান করে, জাভার একীভূত Map
ইন্টারফেসের পরিবর্তে। এই পার্থক্যটি একটি সংগ্রহের পরিবর্তনের জন্য নির্দেশিত কিনা তা স্পষ্ট করে।
কোটলিনের ম্যাপ বাস্তবায়নের একটি গুরুত্বপূর্ণ বিবরণ হল মিউটেবল এবং ইমিউটেবল ম্যাপের মধ্যে সুস্পষ্ট পার্থক্য, যা ভাষার ইমিউটেবিলিটি এবং থ্রেড নিরাপত্তার উপর মনোযোগকে জোর দেয়।
ম্যাপস যদিও অত্যন্ত উপকারী, কোটলিন অন্যান্য সংগ্রহনীয় সংগ্রহ যেমন তালিকা এবং সেটস অফার করে, প্রত্যেকেরই তার নিজস্ব ব্যবহারের ক্ষেত্র আছে। উদাহরণস্বরূপ, তালিকা ক্রম রক্ষা করে এবং সদৃশতা অনুমোদন করে, যা ইনডেক্স দ্বারা উপাদান অ্যাক্সেস করার জন্য আদর্শ, যেখানে সেটস অদ্বিতীয়তা নিশ্চিত করে কিন্তু ক্রম রক্ষা করে না। ম্যাপ, তালিকা বা সেট ব্যবহারের মধ্যে চয়ন আপনার অ্যাপ্লিকেশনের নির্দিষ্ট প্রয়োজনের উপর নির্ভর করে, যেমন কী-ভিত্তিক অ্যাক্সেসের প্রয়োজন বা ক্রম বজায় রাখার প্রয়োজন।
আরও ভাল বিকল্পের দিকে তাকালে, যদি পারফরম্যান্স জরুরি হয়, বিশেষ করে বড় সংগ্রহের সাথে, বিশেষ ব্যবহারের ক্ষেত্রে অপ্টিমাইজড আরও দক্ষ ডেটা স্ট্রাকচার ব্যবহার করা বিবেচনা করুন যা বাইরের লাইব্রেরিগুলি দ্বারা সরবরাহ করা হয়, যেমন সমবেত অ্যাক্সেস বা সাজানোর জন্য অপ্টিমাইজড।