স্কালায় Map একটি ডেটা স্ট্রাকচার যা কীগুলোর সাথে মান সংরক্ষণ করে, অর্থাৎ প্রতিটি কীগুলোর জন্য একটি নির্দিষ্ট মান থাকে। Immutable Map এবং Mutable Map এর মধ্যে প্রধান পার্থক্য হলো ডেটার পরিবর্তনযোগ্যতা (mutability)। চলুন, এই দুটি ম্যাপের মধ্যে পার্থক্য এবং তাদের ব্যবহার বিস্তারিতভাবে দেখি।
১. Immutable Map (ইমিউটেবল ম্যাপ)
Immutable Map হলো একটি ম্যাপ যেখানে একবার সেট করা কীগুলোর মান পরিবর্তন করা যায় না। অর্থাৎ, আপনি যদি একটি ইমিউটেবল ম্যাপে কোনো কীগুলোর মান পরিবর্তন করতে চান, তবে আপনাকে একটি নতুন ম্যাপ তৈরি করতে হবে। এটি প্রোগ্রামিংয়ের সুরক্ষা ও থ্রেড সেফটি নিশ্চিত করতে সহায়ক।
ইমিউটেবল ম্যাপের বৈশিষ্ট্য:
- পরিবর্তনযোগ্য নয়: একবার তৈরি হলে, ইমিউটেবল ম্যাপে কোনো কীগুলোর মান পরিবর্তন করা যায় না।
- থ্রেড সেফ: একাধিক থ্রেড একসাথে ব্যবহার করতে পারবে, কারণ ডেটা অপরিবর্তনীয়।
- ফাংশনাল প্রোগ্রামিং: ইমিউটেবল ম্যাপ ফাংশনাল প্রোগ্রামিংয়ের একটি গুরুত্বপূর্ণ ধারণা, যেখানে ডেটাকে পরিবর্তন না করে নতুন ডেটা তৈরি করা হয়।
স্কালায় ইমিউটেবল ম্যাপ তৈরি করা:
val immutableMap = Map("apple" -> 3, "banana" -> 5, "cherry" -> 2)এখানে, Map("apple" -> 3, "banana" -> 5, "cherry" -> 2) একটি নতুন ইমিউটেবল ম্যাপ তৈরি করেছে, যেখানে কীগুলোর মান নির্ধারিত আছে।
ইমিউটেবল ম্যাপের মান অ্যাক্সেস:
println(immutableMap("apple")) // আউটপুট: 3এখানে, immutableMap("apple") কীগুলোর মান অ্যাক্সেস করছে, যেখানে "apple" এর মান ৩।
২. Mutable Map (মিউটেবল ম্যাপ)
Mutable Map হলো একটি ম্যাপ যেখানে আপনি কীগুলোর মান পরিবর্তন করতে পারেন, নতুন কীগুলোর মান যোগ বা পুরোনো কীগুলোর মান মুছে ফেলতে পারেন। এটি দ্রুত পরিবর্তন এবং ডেটা ম্যানিপুলেশন করতে সহায়ক। তবে এটি থ্রেড সেফ নয়, কারণ একাধিক থ্রেডের মধ্যে এটি পরিবর্তনযোগ্য।
মিউটেবল ম্যাপের বৈশিষ্ট্য:
- পরিবর্তনযোগ্য: কীগুলোর মান যোগ, পরিবর্তন বা মুছে ফেলা যায়।
- থ্রেড সেফ নয়: একাধিক থ্রেডের মধ্যে ব্যবহারে সতর্ক থাকতে হবে।
- পারফরম্যান্স: ডেটা পরিবর্তন দ্রুত ঘটে, কারণ এটি নতুন ম্যাপ তৈরি না করে সরাসরি কীগুলোর মান পরিবর্তন করে।
স্কালায় মিউটেবল ম্যাপ তৈরি করা:
import scala.collection.mutable
val mutableMap = mutable.Map("apple" -> 3, "banana" -> 5, "cherry" -> 2)এখানে, mutable.Map("apple" -> 3, "banana" -> 5, "cherry" -> 2) একটি নতুন মিউটেবল ম্যাপ তৈরি করেছে, যেখানে কীগুলোর মান পরিবর্তন করা যাবে।
মিউটেবল ম্যাপের মান অ্যাক্সেস এবং পরিবর্তন:
mutableMap("apple") = 4 // "apple" কীগুলোর মান পরিবর্তন করা
println(mutableMap("apple")) // আউটপুট: 4এখানে, mutableMap("apple") = 4 দ্বারা "apple" কীগুলোর মান ৩ থেকে ৪ এ পরিবর্তিত করা হয়েছে।
৩. Immutable এবং Mutable Maps এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Immutable Map | Mutable Map |
|---|---|---|
| পরিবর্তনযোগ্যতা | পরিবর্তন করা যায় না | পরিবর্তন করা যায় |
| থ্রেড সেফটি | হ্যাঁ, থ্রেড সেফ | না, থ্রেড সেফ নয় |
| পারফরম্যান্স | কম পারফরম্যান্স (কারণ নতুন ম্যাপ তৈরি হয়) | দ্রুত পারফরম্যান্স (কারণ সরাসরি পরিবর্তন করা হয়) |
| সাইড এফেক্ট | সাইড এফেক্ট কম | সাইড এফেক্ট বেশি (কারণ ডেটা পরিবর্তিত হয়) |
| ব্যবহার | নিরাপদ, ডেটা অপরিবর্তনীয় রাখতে ব্যবহার করা হয় | ডেটা পরিবর্তন করার জন্য ব্যবহৃত হয় |
সারাংশ
- Immutable Map একটি অপরিবর্তনীয় ম্যাপ যেখানে একবার তৈরি হলে কীগুলোর মান পরিবর্তন করা যায় না, এবং এটি থ্রেড সেফ।
- Mutable Map একটি পরিবর্তনযোগ্য ম্যাপ, যেখানে কীগুলোর মান যোগ বা মুছে ফেলা যায় এবং এটি দ্রুত পারফরম্যান্স প্রদান করে, তবে এটি থ্রেড সেফ নয়।
আপনার প্রয়োজন অনুযায়ী, আপনি ইমিউটেবল বা মিউটেবল ম্যাপ ব্যবহার করতে পারেন, যেখানে ইমিউটেবল ম্যাপ সুরক্ষা এবং থ্রেড সেফটি নিশ্চিত করে, এবং মিউটেবল ম্যাপ দ্রুত পরিবর্তন এবং ডেটা ম্যানিপুলেশন করার সুবিধা দেয়।
Read more