স্কালায় লিস্ট এবং অ্যারেগেট (Array) দুটি গুরুত্বপূর্ণ ডেটা স্ট্রাকচার। এগুলোর মধ্যে কিছু মৌলিক পার্থক্য রয়েছে এবং বিভিন্ন পরিস্থিতিতে একে অপরের তুলনায় উপযুক্ত হতে পারে। এখানে আমরা স্কালার লিস্ট এবং অ্যারেই এর ব্যবহারের পার্থক্য এবং উদাহরণ দেখব।
১. স্কালার লিস্ট (List)
লিস্ট স্কালায় একটি ইমিউটেবল (immutable) ডাটা স্ট্রাকচার, অর্থাৎ একবার লিস্ট তৈরি হলে তার উপাদান পরিবর্তন করা যায় না। লিস্টে একাধিক উপাদান থাকতে পারে এবং এটি অর্ডারকৃত (ordered)।
স্কালার লিস্টের বৈশিষ্ট্য:
- ইমিউটেবল: একবার তৈরি হলে লিস্টে উপাদান পরিবর্তন করা যায় না।
- অর্ডারকৃত: লিস্টের মধ্যে উপাদান গুলি একটি নির্দিষ্ট অর্ডারে থাকে।
- হেড এবং টেল: লিস্টে প্রথম উপাদানকে হেড এবং বাকি উপাদানগুলিকে টেল বলে অভিহিত করা হয়।
লিস্টের তৈরি এবং ব্যবহার:
object ListExample {
def main(args: Array[String]): Unit = {
// লিস্ট তৈরি
val fruits = List("Apple", "Banana", "Cherry")
// লিস্টের উপাদান এক্সেস করা
println(fruits.head) // Output: Apple
println(fruits.tail) // Output: List(Banana, Cherry)
// নতুন উপাদান যোগ করা (লিস্টে যোগ করা মানে নতুন লিস্ট তৈরি)
val newFruits = "Orange" :: fruits
println(newFruits) // Output: List(Orange, Apple, Banana, Cherry)
}
}এখানে:
Listএকটি ইমিউটেবল ডাটা স্ট্রাকচার এবং::অপারেটর ব্যবহার করে নতুন উপাদান যোগ করা হয়েছে।.headপ্রথম উপাদান এবং.tailবাকি উপাদানগুলো পেতে ব্যবহার করা হয়েছে।
লিস্টে কিছু সাধারণ অপারেশন:
::: একটি নতুন উপাদান যোগ করা।++: দুটি লিস্ট একত্রিত করা।map: লিস্টের প্রতিটি উপাদানের উপর একটি ফাংশন প্রয়োগ করা।
val numbers = List(1, 2, 3, 4)
val doubledNumbers = numbers.map(_ * 2) // Output: List(2, 4, 6, 8)
println(doubledNumbers)২. স্কালার অ্যারে (Array)
অ্যারেই স্কালায় একটি মিউটেবল (mutable) ডাটা স্ট্রাকচার, যার মধ্যে উপাদানগুলি নির্দিষ্ট ইনডেক্স দ্বারা অ্যাক্সেস করা যায় এবং উপাদান পরিবর্তন করা যায়।
স্কালার অ্যারের বৈশিষ্ট্য:
- মিউটেবল: অ্যারে তৈরি হওয়ার পর তার উপাদান পরিবর্তন করা যেতে পারে।
- ফিক্সড সাইজ: অ্যারে একটি নির্দিষ্ট সাইজের ডাটা স্ট্রাকচার, একবার অ্যারে তৈরি হয়ে গেলে তার সাইজ পরিবর্তন করা যায় না।
- র্যান্ডম অ্যাক্সেস: অ্যারে থেকে উপাদান নির্দিষ্ট ইনডেক্স ব্যবহার করে খুব দ্রুত অ্যাক্সেস করা যায়।
অ্যারে তৈরি এবং ব্যবহার:
object ArrayExample {
def main(args: Array[String]): Unit = {
// অ্যারে তৈরি
val numbers = Array(1, 2, 3, 4, 5)
// অ্যারের উপাদান এক্সেস করা
println(numbers(0)) // Output: 1
println(numbers(4)) // Output: 5
// অ্যারে উপাদান পরিবর্তন করা
numbers(0) = 10
println(numbers(0)) // Output: 10
}
}এখানে:
- অ্যারের উপাদান পরিবর্তন করা হয়েছে
numbers(0) = 10স্টেটমেন্টের মাধ্যমে। - অ্যারে ইন্ডেক্স শুরু হয়
0থেকে।
অ্যারে কিছু সাধারণ অপারেশন:
update: অ্যারে উপাদান পরিবর্তন করা।map: অ্যারের প্রতিটি উপাদানের উপর ফাংশন প্রয়োগ করা।foreach: অ্যারের প্রতিটি উপাদান এর উপর একটি কার্যক্রম প্রয়োগ করা।
val arr = Array(1, 2, 3, 4)
arr.foreach(println) // Output: 1 2 3 4৩. লিস্ট এবং অ্যারের পার্থক্য
| বৈশিষ্ট্য | লিস্ট (List) | অ্যারে (Array) |
|---|---|---|
| ইমিউটেবল বা মিউটেবল | ইমিউটেবল (Immutable) | মিউটেবল (Mutable) |
| সাইজ | ভ্যারিয়েবল সাইজ (এটা পরিবর্তন করা যায় না) | ফিক্সড সাইজ (এটা একবার তৈরি হলে পরিবর্তন করা যায় না) |
| ডাটা অ্যাক্সেস | হেড এবং টেল দিয়ে অ্যাক্সেস করা হয় | ইনডেক্স ব্যবহার করে দ্রুত অ্যাক্সেস করা যায় |
| কনটেইনার টাইপ | এক্সটেনশন সহ নতুন উপাদান যুক্ত করা যায় | অ্যারের সাইজ ফিক্সড |
| পারফরম্যান্স | কিছুটা ধীর গতির (চলতি উপাদান পরিবর্তন না করা হলে) | দ্রুত (র্যান্ডম অ্যাক্সেসের জন্য) |
৪. লিস্ট এবং অ্যারে কবে ব্যবহার করবেন?
- লিস্ট: আপনি যদি একটি ইমিউটেবল ডাটা স্ট্রাকচার চান এবং উপাদানগুলোর সাথে অনেক ফাংশনাল অপারেশন (যেমন:
map,filter,reduceইত্যাদি) করতে চান, তাহলে লিস্ট ব্যবহার করুন। - অ্যারেই: যদি আপনি একটি মিউটেবল ডাটা স্ট্রাকচার চান এবং দ্রুত র্যান্ডম অ্যাক্সেস (ইনডেক্সিং) এবং উপাদান পরিবর্তন করতে চান, তবে অ্যারে ব্যবহার করুন।
সারাংশ
- লিস্ট: স্কালায় লিস্ট একটি ইমিউটেবল ডাটা স্ট্রাকচার যা সহজে রূপান্তরযোগ্য এবং অপারেশনগুলির জন্য উপযুক্ত।
- অ্যারেই: অ্যারে একটি মিউটেবল ডাটা স্ট্রাকচার, যা দ্রুত র্যান্ডম অ্যাক্সেস এবং উপাদান পরিবর্তনের জন্য আদর্শ।
এখন আপনি বুঝতে পারছেন যে স্কালার লিস্ট এবং অ্যারে কোন পরিস্থিতিতে ব্যবহার করা উচিত।
Read more