স্কালা প্রোগ্রামিং ভাষায় Map এবং Set দুটি গুরুত্বপূর্ণ ডাটা স্ট্রাকচার, যেগুলি বিভিন্ন ধরনের ডাটা সঞ্চয়ের জন্য ব্যবহৃত হয়। এই ডাটা স্ট্রাকচারগুলি স্কালার 컬েকশন লাইব্রেরির অংশ এবং ফাংশনাল প্রোগ্রামিংয়ের সুবিধা নিয়ে কাজ করে।
১. স্কালা ম্যাপ (Map)
Map একটি কনটেইনার ডাটা স্ট্রাকচার যেখানে কী (key) এবং মান (value) পেয়ার হিসেবে ডাটা সংরক্ষণ করা হয়। প্রতিটি কী একক হওয়া প্রয়োজন এবং এর মাধ্যমে আমরা মানকে দ্রুত অ্যাক্সেস করতে পারি।
১.১ Map এর ধরন:
- Immutable Map: স্কালায় ডিফল্টভাবে Immutable Map ব্যবহৃত হয়। মানে, একবার মান অ্যাসাইন করা হলে, তা পরিবর্তন করা যায় না।
- Mutable Map: আপনি চাইলে mutable.Map ব্যবহার করতে পারেন, যেখানে মান পরিবর্তন করা যায়।
১.২ Immutable Map উদাহরণ
object MapExample {
def main(args: Array[String]): Unit = {
// Immutable Map
val capitals = Map("India" -> "New Delhi", "USA" -> "Washington D.C.", "Japan" -> "Tokyo")
// Accessing a value by key
println("Capital of India: " + capitals("India")) // Output: New Delhi
println("Capital of Japan: " + capitals("Japan")) // Output: Tokyo
}
}এখানে:
Mapএকটি কনটেইনার যাIndia,USA, এবংJapanএর রাজধানী সংরক্ষণ করে।"India" -> "New Delhi"হল একটি কী-মান পেয়ার।
১.৩ Mutable Map উদাহরণ
import scala.collection.mutable
object MutableMapExample {
def main(args: Array[String]): Unit = {
// Mutable Map
val mutableCapitals = mutable.Map("India" -> "New Delhi", "USA" -> "Washington D.C.")
// Modifying the value of a key
mutableCapitals("USA") = "Los Angeles" // Changing capital of USA
println("Updated Capital of USA: " + mutableCapitals("USA")) // Output: Los Angeles
}
}এখানে:
mutable.Mapএকটি মিউটেবল ম্যাপ যেখানে মান পরিবর্তন করা সম্ভব।
১.৪ Map এর বিভিন্ন ফাংশন
- map: একটি ফাংশনকে প্রতিটি উপাদানের উপর প্রয়োগ করে নতুন একটি কন্টেইনার রিটার্ন করে।
- get: একটি কী দিয়ে মান বের করা।
- contains: একটি কী-ভিত্তিক পরীক্ষা করা।
val numbers = Map(1 -> "One", 2 -> "Two", 3 -> "Three")
val doubledNumbers = numbers.map { case (key, value) => (key * 2, value) }
println(doubledNumbers) // Output: Map(2 -> One, 4 -> Two, 6 -> Three)
println(numbers.get(2)) // Output: Some(Two)
println(numbers.contains(4)) // Output: false২. স্কালা সেট (Set)
Set একটি কনটেইনার ডাটা স্ট্রাকচার যেখানে অনন্য (unique) উপাদান (elements) সংরক্ষিত থাকে। এটি ডুপ্লিকেট মান সমর্থন করে না, অর্থাৎ একই মান একাধিকবার থাকতে পারে না। স্কালায় সেটের দুটি ধরনের রয়েছে:
- Immutable Set: ডিফল্ট সেট টাইপ যা ইমিউটেবল।
- Mutable Set: যেখানে আপনি ডাটা পরিবর্তন করতে পারবেন।
২.১ Immutable Set উদাহরণ
object SetExample {
def main(args: Array[String]): Unit = {
// Immutable Set
val numbers = Set(1, 2, 3, 4, 5)
// Adding an element (Note: Immutable Set can't be modified directly)
val newNumbers = numbers + 6
println("Original Set: " + numbers) // Output: Set(1, 2, 3, 4, 5)
println("Updated Set: " + newNumbers) // Output: Set(1, 2, 3, 4, 5, 6)
}
}এখানে:
- Immutable Set-এ উপাদান যুক্ত করার সময় সেট পরিবর্তিত হয় না, বরং একটি নতুন সেট তৈরি হয়।
২.২ Mutable Set উদাহরণ
import scala.collection.mutable
object MutableSetExample {
def main(args: Array[String]): Unit = {
// Mutable Set
val mutableNumbers = mutable.Set(1, 2, 3, 4, 5)
// Adding an element (Mutable Set can be modified)
mutableNumbers += 6
println("Updated Set: " + mutableNumbers) // Output: Set(1, 2, 3, 4, 5, 6)
}
}এখানে:
- Mutable Set-এ নতুন উপাদান যুক্ত করা হয়েছে এবং সেটের মান পরিবর্তিত হয়েছে।
২.৩ Set এর বিভিন্ন ফাংশন
- union: দুটি সেটের সমন্বয়।
- intersection: দুটি সেটের মিল।
- difference: দুটি সেটের পার্থক্য।
val setA = Set(1, 2, 3, 4)
val setB = Set(3, 4, 5, 6)
println(setA union setB) // Output: Set(1, 2, 3, 4, 5, 6)
println(setA intersect setB) // Output: Set(3, 4)
println(setA diff setB) // Output: Set(1, 2)এখানে:
- union: দুটি সেটের সমস্ত উপাদান একত্রিত করে।
- intersect: দুটি সেটের মিলিত উপাদানগুলো বের করে।
- diff: এক সেটে থাকা কিন্তু অন্য সেটে না থাকা উপাদানগুলো বের করে।
সারাংশ
- Map একটি কনটেইনার যা কী-মান পেয়ার সংরক্ষণ করে, এবং এটি Immutable এবং Mutable উভয় ধরনে পাওয়া যায়।
- Set একটি কনটেইনার যা শুধুমাত্র unique উপাদান সংরক্ষণ করে এবং এটি Immutable এবং Mutable উভয় ধরনে পাওয়া যায়।
স্কালায় Map এবং Set ব্যবহার করলে ডাটা স্ট্রাকচারের সাথে কাজ করা সহজ হয় এবং ফাংশনাল প্রোগ্রামিংয়ের সুবিধা পাওয়া যায়।
Read more