স্কালাতে sorted, sortBy, এবং sortWith ফাংশনগুলো কালেকশন (যেমন লিস্ট) এর উপাদানগুলোকে সজ্জিত (sort) করতে ব্যবহৃত হয়। এগুলি প্রতিটি আলাদা ফাংশনালিটি প্রদান করে এবং বিভিন্ন ধরনের সাজানোর কৌশল প্রয়োগ করতে সক্ষম। চলুন, এই ফাংশনগুলোর বিস্তারিত উদাহরণ এবং পার্থক্য দেখি।
১. sorted ফাংশন
sorted ফাংশন একটি কালেকশনের উপাদানগুলোকে ডিফল্টভাবে অ্যাসেন্ডিং (ascending) অর্ডারে সাজায় (যদি উপাদানগুলোর মধ্যে নির্দিষ্ট কোনো ক্রম না থাকে, তবে তাদের তুলনা করা হয়)।
উদাহরণ:
val numbers = List(5, 2, 9, 1, 3)
val sortedNumbers = numbers.sorted
println(sortedNumbers) // List(1, 2, 3, 5, 9)এখানে, sorted ফাংশন লিস্টের উপাদানগুলোর ডিফল্ট অ্যাসেন্ডিং অর্ডারে সাজানো হয়েছে।
২. sortBy ফাংশন
sortBy ফাংশন ব্যবহার করে আপনি একটি নির্দিষ্ট ক্রাইটেরিয়ার ভিত্তিতে সজ্জিত করতে পারেন। এটি সাধারণত একটি ফাংশন গ্রহণ করে যা প্রত্যেকটি উপাদানকে একটি মানের উপর ম্যাপ করে এবং সেই মানের ভিত্তিতে সাজানো হয়।
উদাহরণ:
case class Person(name: String, age: Int)
val people = List(
Person("Alice", 30),
Person("Bob", 25),
Person("Charlie", 35)
)
val sortedByAge = people.sortBy(person => person.age)
println(sortedByAge) // List(Person(Bob,25), Person(Alice,30), Person(Charlie,35))এখানে, sortBy ফাংশনটি Person অবজেক্টগুলির age ফিল্ডের উপর ভিত্তি করে সজ্জিত করছে।
আরেকটি উদাহরণ:
val names = List("Banana", "Apple", "Cherry")
val sortedByLength = names.sortBy(_.length)
println(sortedByLength) // List(Apple, Banana, Cherry)এখানে, sortBy লিস্টের উপাদানগুলির দৈর্ঘ্যের (length) ওপর ভিত্তি করে সাজাচ্ছে।
৩. sortWith ফাংশন
sortWith ফাংশন একটি তুলনা ফাংশন নেয় যা দুটি উপাদান তুলনা করে এবং তাদের মধ্যে কোনটি আগে আসবে তা নির্ধারণ করে। এটি একটি বাইনারি ফাংশন যা true ফেরত দিলে প্রথম উপাদানটি আগে আসবে, না হলে দ্বিতীয় উপাদানটি আগে আসবে।
উদাহরণ:
val numbers = List(5, 2, 9, 1, 3)
val sortedWithCustomComparison = numbers.sortWith((x, y) => x < y)
println(sortedWithCustomComparison) // List(1, 2, 3, 5, 9)এখানে, sortWith ফাংশনটি x < y শর্তে ভিত্তি করে দুটি উপাদান তুলনা করছে এবং অ্যাসেন্ডিং অর্ডারে সাজাচ্ছে।
আরেকটি উদাহরণ:
case class Person(name: String, age: Int)
val people = List(
Person("Alice", 30),
Person("Bob", 25),
Person("Charlie", 35)
)
val sortedByName = people.sortWith((a, b) => a.name < b.name)
println(sortedByName) // List(Person(Alice,30), Person(Bob,25), Person(Charlie,35))এখানে, sortWith ব্যবহার করে Person অবজেক্টগুলিকে তাদের নামের উপর ভিত্তি করে সাজানো হয়েছে।
পার্থক্য
| ফাংশন | অর্থ এবং ব্যবহার | উদাহরণ |
|---|---|---|
| sorted | ডিফল্ট ক্রম অনুযায়ী (অ্যাসেন্ডিং) কালেকশন সজ্জিত করে। | List(5, 2, 9, 1, 3).sorted → List(1, 2, 3, 5, 9) |
| sortBy | নির্দিষ্ট ক্রাইটেরিয়া অনুযায়ী (যেমন, কোন ফিল্ড বা প্রপার্টি) সজ্জিত করে। | people.sortBy(_.age) → List(Bob, Alice, Charlie) |
| sortWith | একটি তুলনা ফাংশন ব্যবহার করে দুটি উপাদান তুলনা করে সজ্জিত করে। | numbers.sortWith((x, y) => x < y) → List(1, 2, 3, 5, 9) |
সারাংশ
sortedফাংশনটি একটি কালেকশনের উপাদানগুলোকে ডিফল্টভাবে অ্যাসেন্ডিং অর্ডারে সাজায়।sortByফাংশনটি একটি নির্দিষ্ট ফিল্ড বা ক্রাইটেরিয়া অনুযায়ী উপাদানগুলোকে সাজাতে ব্যবহৃত হয়।sortWithফাংশনটি একটি তুলনা ফাংশন নেয় এবং ব্যবহারকারীর নিজস্ব তুলনা লজিক অনুসারে উপাদানগুলোকে সাজায়।
এই ফাংশনগুলি স্কালাতে খুবই গুরুত্বপূর্ণ এবং বিভিন্ন ডেটা সেট বা কালেকশন এর উপর ভিত্তি করে সাজানোর কাজ করতে ব্যবহৃত হয়।
Read more