কম্পিউটার টিউটোরিয়াল

কোটলিনে সংগ্রহকে একাধিক ক্ষেত্রে সাজানোর উপায়

ওভারভিউ

সংগ্রহ (Collection) হল একটি অবজেক্ট যেখানে বিকাশকারীরা বিভিন্ন ধরনের সম্পর্কিত অবজেক্ট এক জায়গায় গোষ্ঠী করতে পারেন। কোটলিন লাইব্রেরিতে তালিকা (List), অ্যারে (Array) ইত্যাদি বিভিন্ন ধরনের সংগ্রহ রয়েছে।

এই নিবন্ধে, আমরা দেখব কিভাবে একটি সংগ্রহকে তার ভেতরের বিভিন্ন বৈশিষ্ট্য অনুযায়ী সাজানো যায়। তার জন্য আমরা কোটলিন লাইব্রেরির নিচের দুটি ফাংশনের সাহায্য নেব:

  • 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>

উদাহরণ

নিচের উদাহরণে, আমরা Student নামে একটি ক্লাস তৈরি করব যা ছাত্রের নাম, বয়স এবং GPA ধারণ করবে। আমরা পুরো তালিকাটি সাজাতে চাই, শুধু "বয়স" বা "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
  1. MySQL-এ GREATEST() দিয়ে একাধিক কলাম একসাথে সর্ট করা

  2. PHP-তে মাল্টিডাইমেনশনাল অ্যারে একাধিক কী দিয়ে সর্ট করা

  3. জাভাতে JSONObject কীভাবে সর্ট করবেন?

  4. পাইথনে একাধিক কলাম অনুযায়ী CSV সর্ট করার পদ্ধতি