একটি সংগ্রহ একটি অবজেক্ট যেখানে ডেভেলপাররা বিভিন্ন ধরনের সম্পর্কিত বস্তু এক জায়গায় গ্রুপ করতে পারে। কোটলিন লাইব্রেরিতে বিভিন্ন ধরনের সংগ্রহ রয়েছে যেমন তালিকা, অ্যারে ইত্যাদি।
এই নিবন্ধে, আমরা দেখব কিভাবে আমরা সেই সংগ্রহের ভিতরে উপস্থিত বিভিন্ন বৈশিষ্ট্য দ্বারা একটি সংগ্রহকে সাজাতে পারি। এটি করার জন্য, আমরা কোটলিন লাইব্রেরি দ্বারা প্রদত্ত নিম্নলিখিত দুটি ফাংশনের সাহায্য নেব৷
-
sortedWith()
-
compareBy()
sortedWith()
sortedWith() কোটলিন লাইব্রেরি দ্বারা প্রদত্ত একটি ফাংশন যা একটি নির্দিষ্ট তুলনাকারী দ্বারা সাজানো সমস্ত উপাদানের একটি তালিকা প্রদান করে। অফিসিয়াল কোটলিন ডকুমেন্টেশন অনুসারে, ফাংশনের সংজ্ঞা হল,
fun <T> Array<out T>.sortedWith( comparator: Comparator<in T> ): List<T>
sortedWith() একটি আর্গুমেন্ট হিসাবে একটি তুলনাকারীকে নেয় এবং প্রতিটি বস্তুর কাস্টম বৈশিষ্ট্য তুলনা করে এবং একইভাবে সাজায়৷
compareBy()
compareBy() আমরা sortedWith()-এ পাস করব এমন তুলনাকারী তৈরি করার জন্য দায়ী বস্তুর বৈশিষ্ট্য বাছাই করার জন্য। কোটলিন ডকুমেন্টেশন অনুসারে, ফাংশনের সংজ্ঞা এই রকম:
fun <T> compareBy( vararg selectors: (T) -> Comparable<*>? ): Comparator<T>
উদাহরণ
নিম্নলিখিত উদাহরণে, আমরা একটি ক্লাস ছাত্র তৈরি করব যেটি বিভিন্ন ধরণের মান যেমন ছাত্রের নাম, তাদের বয়স এবং সংশ্লিষ্ট জিপিএ ধারণ করবে। আমরা শুধুমাত্র "বয়স" বা "GPA" দ্বারা নয়, সম্পূর্ণরূপে একইভাবে সাজাতে চাই৷
৷fun main() { val studentA=Student("Student A",18,7.0) val studentB=Student("Student B",18,6.9) val studentC=Student("Student C",20,7.3) val studentD=Student("Student D",22,8.3) val studentsList=listOf( studentA, studentB, studentC, studentD ); val sortedList=studentsList.sortedWith( compareBy( {it.age}, {it.GPA} ) ) sortedList.forEach { println("name: ${it.name}, age: ${it.age}, GPA: ${it.GPA}") } } class Student(val name:String, val age:Int, val GPA: Double)
আউটপুট
একবার আপনি কোডটি কার্যকর করলে, এটি নিম্নলিখিত আউটপুট −
উৎপন্ন করবেname: Student B, age: 18, GPA: 6.9 name: Student A, age: 18, GPA: 7.0 name: Student C, age: 20, GPA: 7.3 name: Student D, age: 22, GPA: 8.3