তুলনাযোগ্য ইন্টারফেস একটি compareTo() প্রদান করে বস্তুর অর্ডার করার পদ্ধতি। এই ক্রমটিকে শ্রেণীর বলা হয় প্রাকৃতিক আদেশ এবং compareTo() পদ্ধতিটিকে এর প্রাকৃতিক তুলনা পদ্ধতি বলা হয় . তুলনাকারী ইন্টারফেস সর্টিং অপারেশন সম্পাদনের পদ্ধতি প্রদান করে . তুলনাকারী ব্যবহার করে ইন্টারফেস আমরা একাধিক বাছাই ক্রম করতে পারি . আমরা একাধিক ডেটা সদস্যের সাপেক্ষে বস্তুগুলিকে সাজাতে পারি৷
তুলনা করুন()
তুলনা করুন() পদ্ধতি এই বস্তুটিকে একটি o1 বস্তুর সাথে তুলনা করে এবং একটি পূর্ণসংখ্যা প্রদান করে .
সিনট্যাক্স
public int compareTo(Object o1)
- এটি –ve সংখ্যা প্রদান করে যদি এবং শুধুমাত্র যদি এই বস্তুটি o1 এর কম হয়।
- এটি +ve নম্বর প্রদান করে যদি এবং শুধুমাত্র যদি এই বস্তুটি o1 এর থেকে বড় হয়।
- এটি 0 প্রদান করে যদি এবং শুধুমাত্র যদি এই বস্তুটি o1 এর সমান হয়।
উদাহরণ
import java.util.*;শ্রেণীর কর্মচারী তুলনামূলক { স্ট্রিং নাম; int বয়স; কর্মচারী (স্ট্রিং নাম, int বয়স) { this.name =name; this.age =বয়স; } //overridden compareTo পদ্ধতি @Override public int compareTo(Object o) { return this.age - ((Employee) o).age; }}পাবলিক ক্লাস কম্পারেবলডেমো { পাবলিক স্ট্যাটিক ভ্যাইড মেইন(স্ট্রিং[] আর্গস) { // ক্রিয়েশন লিস্ট লিস্ট =নতুন অ্যারেলিস্ট<>(); //INSERTION list.add(নতুন কর্মচারী("কৃষ্ণ", 30)); list.add(নতুন কর্মচারী("অর্চনা", ২৮)); list.add(নতুন কর্মচারী("Vineet", 25)); list.add(নতুন কর্মচারী("রমেশ", 38)); list.add(নতুন কর্মচারী("আলোক", ২৮)); System.out.println("বাছাই করার আগে:"); জন্য (কর্মচারী ই :তালিকা) { System.out.print("[ EMP :বয়স =" + e.age + " ] "); } // SORTING Collections.sort(তালিকা); System.out.println("বাছাই করার পর:"); জন্য (কর্মচারী ই :তালিকা) { System.out.print("[ EMP :বয়স =" + e.age + " ] "); } } }
আউটপুট
<প্রে>বাছাই করার আগে:[ EMP :বয়স =2 ] [ EMP :বয়স =33 ] [ EMP :বয়স =11 ] [ EMP :বয়স =34 ] [ EMP :বয়স =7 ] সাজানোর পর:[ EMP :বয়স =2 ] [ EMP :বয়স =7 ] [ EMP :বয়স =11 ] [ EMP :বয়স =33 ] [ EMP :বয়স =34 ]তুলনা ()
তুলনা () পদ্ধতিটি দ্বিতীয় বস্তুর সাথে প্রথম বস্তুর তুলনা করে এবং একটি পূর্ণসংখ্যা প্রদান করে
সিনট্যাক্স
পাবলিক int তুলনা (অবজেক্ট o1,অবজেক্ট o2)
- এটি –ve সংখ্যা প্রদান করে যদি এবং শুধুমাত্র যদি o1 o2 এর থেকে কম হয়
- এটি +ve সংখ্যা প্রদান করে যদি এবং শুধুমাত্র যদি o1 o2 এর থেকে বড় হয়
- এটি 0 প্রদান করে যদি এবং শুধুমাত্র যদি o1 o2 এর সমান হয়
উদাহরণ
java.util.*;শ্রেণির ছাত্র { স্ট্রিং নাম; int বয়স, রোল; ছাত্র (স্ট্রিং নাম, int বয়স, int রোল) { this.name =name; this.age =বয়স; this.roll =রোল; }} class AgeComparator Comparator প্রয়োগ করে { @Override public int compare(Object o1, Object o2) { return ((Student) o1).age - ((Student) o2).age; }} class RollComparator Comparator প্রয়োগ করে { @Override public int compare(Object o1, Object o2) { return ((Student) o1).roll - ((Student) o2).roll; }}পাবলিক ক্লাস কম্পারেটরডেমো { পাবলিক স্ট্যাটিক ভ্যাইড মেইন(স্ট্রিং[] আর্গস) { তালিকা তালিকা =নতুন অ্যারেলিস্ট<>(); list.add(নতুন ছাত্র("রমেশ", 30, 20)); list.add(নতুন ছাত্র("আদিত্য", 7, 10)); list.add(নতুন ছাত্র("কৃষ্ণ", 25, 5)); list.add(নতুন ছাত্র("Vineet", 24, 15)); System.out.println("বাছাই করার আগে"); (ছাত্র e :তালিকা) { System.out.println("[ STU :name =" + e.name + " age =" + e.age + " roll =" + e.roll + "]"); } Collections.sort(তালিকা,নতুন AgeComparator()); System.out.println("বয়সের সাথে সাজানোর পর"); জন্য (ছাত্র e :তালিকা) { System.out.println("[ STU :name =" + e.name + " age =" + e.age + " ]"); } Collections.sort(তালিকা,নতুন রোলকম্পারেটর()); System.out.println("আফটার সর্টিং উইথ রোল"); (ছাত্র e :তালিকা) { System.out.println("[ STU :name =" + e.name + " roll =" + e.roll + " ]"); } } }
আউটপুট
বাছাই করার আগে [ STU :নাম =রমেশ বয়স =30 রোল =20 ][ STU :নাম =আদিত্য বয়স =7 রোল =10 ][ STU :নাম =কৃষ্ণের বয়স =25 রোল =5 ][ STU :নাম =বিনীত বয়স =24 রোল =15 ]বয়স অনুসারে বাছাই করার পর[ STU :নাম =আদিত্য বয়স =7 ][ STU :নাম =বিনীতের বয়স =24 ][ STU :নাম =কৃষ্ণের বয়স =25 ][ STU :নাম =রমেশ বয়স =30 রোল দিয়ে সাজানোর পর [ STU :name =Krishna roll =5 ][ STU :name =Aditya roll =10 ][ STU :name =Vineet roll =15 ][ STU :name =Ramesh roll =20 ]