Sorting (সার্টিং) হল একটি ডেটা সংগ্রহের উপাদানগুলিকে একটি নির্দিষ্ট ক্রমে সাজানোর প্রক্রিয়া। স্কালাতে, Collections (কালেকশনস) এর মধ্যে ডেটা সজ্জিত করার জন্য বেশ কিছু সর্টিং টেকনিক ব্যবহৃত হয়। এটি ডেটাকে সহজে বিশ্লেষণ এবং ব্যবস্থাপনা করতে সাহায্য করে। স্কালা কালেকশনস যেমন List, Vector, Set, Map ইত্যাদির উপর বিভিন্ন সার্টিং অপারেশন প্রয়োগ করা যেতে পারে।
স্কালাতে সাধারণত ব্যবহৃত Sorting Techniques:
- SortBy
sortByএকটি ফাংশনাল অপারেশন যা এক বা একাধিক মানের ভিত্তিতে এলিমেন্টগুলোকে সাজাতে ব্যবহৃত হয়। এটি একটি কাস্টম ফাংশন গ্রহণ করে এবং সেই ফাংশনের মাধ্যমে উপাদানগুলিকে সাজানোর জন্য নির্দেশনা প্রদান করে। - Sorted
sortedএকটি স্ট্যান্ডার্ড ফাংশন যা একটি কালেকশনকে ডিফল্ট কম্প্যারেটর (যেমন, কমপ্যারেবল প্রপার্টি থাকা উপাদানগুলির উপর কাজ করা) ব্যবহার করে সাজায়। - SortWith
sortWithফাংশনটি একটি কাস্টম কম্প্যারেটর ব্যবহার করে এলিমেন্টগুলো সাজানোর জন্য ব্যবহৃত হয়, যেটি দুইটি উপাদানকে তুলনা করে একটি সজ্জিত ফলাফল তৈরি করে।
উদাহরণ ১: sortBy ব্যবহার
sortBy একটি কালেকশনের উপাদানগুলিকে নির্দিষ্ট ফিল্ড বা কাস্টম ক্রাইটেরিয়ার ভিত্তিতে সাজানোর জন্য ব্যবহৃত হয়।
val numbers = List(5, 2, 9, 1, 5, 6)
// Ascending Order
val sortedNumbers = numbers.sortBy(x => x)
println(sortedNumbers) // List(1, 2, 5, 5, 6, 9)
// Descending Order
val reverseSortedNumbers = numbers.sortBy(x => -x)
println(reverseSortedNumbers) // List(9, 6, 5, 5, 2, 1)এখানে, sortBy ফাংশনটি x => x (অথবা x => -x এর মাধ্যমে অবলম্বন করে ডেটা সাজিয়েছে।
উদাহরণ ২: sorted ব্যবহার
sorted একটি সাধারণ ফাংশন যা ডিফল্ট কম্প্যারেটর অনুসারে এলিমেন্টগুলো সাজাতে ব্যবহৃত হয়।
val numbers = List(5, 2, 9, 1, 5, 6)
// Ascending Order
val sortedNumbers = numbers.sorted
println(sortedNumbers) // List(1, 2, 5, 5, 6, 9)এখানে, sorted ফাংশনটি ডিফল্টভাবে কম্প্যারেটেবল এলিমেন্টগুলিকে চড়া অর্ডারে সাজিয়ে দিয়েছে।
উদাহরণ ৩: sortWith ব্যবহার
sortWith ব্যবহার করে আপনি একটি কাস্টম তুলনা ফাংশন (কম্প্যারেটর) প্রদান করতে পারেন যা উপাদানগুলির মধ্যে তুলনা করে সাজানোর কাজ করবে।
val numbers = List(5, 2, 9, 1, 5, 6)
// Custom Sort: Sort in descending order
val sortedNumbers = numbers.sortWith((x, y) => x > y)
println(sortedNumbers) // List(9, 6, 5, 5, 2, 1)এখানে, sortWith ফাংশনটি একটি তুলনা ফাংশন নিয়ে কাজ করেছে যেখানে প্রথম উপাদানটি দ্বিতীয়টির চেয়ে বড় হলে তা আগে আসবে।
উদাহরণ ৪: Map এ Sorting
যখন আপনি Map-এর উপর সার্টিং করতে চান, আপনি মূলত key বা value অনুযায়ী সাজাতে পারবেন।
val map = Map("apple" -> 3, "banana" -> 1, "cherry" -> 2)
// Sort by key
val sortedByKey = map.toList.sortBy(_._1)
println(sortedByKey) // List((apple,3), (banana,1), (cherry,2))
// Sort by value
val sortedByValue = map.toList.sortBy(_._2)
println(sortedByValue) // List((banana,1), (cherry,2), (apple,3))এখানে, Map-এর উপর sortBy ব্যবহার করে আপনি key বা value অনুযায়ী ডেটা সাজাতে পারেন।
সারাংশ
Sorting Techniques কালেকশনগুলির উপাদানগুলিকে সাজানোর জন্য একটি গুরুত্বপূর্ণ উপায়। স্কালায় sortBy, sorted, এবং sortWith ফাংশনগুলি সাধারণত ব্যবহৃত হয়, যা ডেটার উপর বিভিন্ন ধরনের ক্রম সজ্জিত করতে সাহায্য করে। এর মাধ্যমে আপনি সহজে এবং কার্যকরভাবে ডেটাকে সাজাতে পারেন, যা পরবর্তীতে বিশ্লেষণ বা অন্যান্য অপারেশনে সহায়ক হতে পারে।
Read more