উদাহরণ সহ জাভাতে তুলনাকারী ইন্টারফেস কি?
Comparator ইন্টারফেসে compare() এবং equals() পদ্ধতি রয়েছে। প্রথম পদ্ধতিটি একটি পূর্ণসংখ্যার মান ফিরিয়ে দিয়ে দুটি বস্তু গণনা করার জন্য ব্যবহার করা হয়। অন্য পদ্ধতিটি সমতার জন্য দুটি তুলনামূলক বস্তু গণনা করার জন্য ব্যবহার করা হয়।
জাভাতে তুলনাকারী ইন্টারফেস কীভাবে ব্যবহার করবেন তার বিভিন্ন উদাহরণ এখানে রয়েছে:
উদাহরণ 1: দৈর্ঘ্যের উপর ভিত্তি করে একটি তালিকা সাজান
এই উদাহরণে, স্ট্রিংগুলির একটি তালিকা বিবেচনা করা হয় এবং বর্ণানুক্রমিক ক্রমের পরিবর্তে তাদের দৈর্ঘ্যের উপর ভিত্তি করে সাজান:
আমদানি java.util.ArrayList ;
আমদানি java.util.সংগ্রহ ;
আমদানি java.util.কম্পারেটর ;
আমদানি java.util.লিস্ট ;
পাবলিক ক্লাস প্রধান {
পাবলিক স্থির অকার্যকর প্রধান ( স্ট্রিং [ ] args ) {
তালিকা < স্ট্রিং > তালিকা = নতুন অ্যারেলিস্ট <> ( ) ;
তালিকা যোগ করুন ( 'জন' ) ;
তালিকা যোগ করুন ( 'বব' ) ;
তালিকা যোগ করুন ( 'এলিস' ) ;
সংগ্রহ . সাজান ( তালিকা ) ;
পদ্ধতি . আউট . println ( তালিকা ) ;
সংগ্রহ . সাজান ( তালিকা নতুন স্ট্রিংলেংথ কম্প্যারেটর ( ) ) ;
পদ্ধতি . আউট . println ( তালিকা ) ;
}
} // একটি শ্রেণী সংজ্ঞায়িত করা হয়
ক্লাস স্ট্রিংলেংথ কম্প্যারেটর প্রয়োগ করে তুলনাকারী < স্ট্রিং > {
পাবলিক int তুলনা করা ( স্ট্রিং s1, স্ট্রিং s2 ) {
ফিরে পূর্ণসংখ্যা . তুলনা করা ( s1. দৈর্ঘ্য ( ) , s2। দৈর্ঘ্য ( ) ) ;
}
}
উপরের কোডের বর্ণনা নীচে দেওয়া হল:
- প্রথমে, StringLengthComparator নামে একটি কাস্টম কম্প্যারেটর ক্লাস তৈরি করুন যা Comparator
ইন্টারফেস প্রয়োগ করে। - এটি দুটি স্ট্রিংয়ের দৈর্ঘ্য তুলনা করার জন্য compare() পদ্ধতিকে ওভাররাইড করে।
- শেষ পর্যন্ত, আমাদের কাস্টম তুলনাকারী ব্যবহার করে তালিকা বাছাই করার জন্য the.sort() পদ্ধতিতে একটি উদাহরণ দিন।
আউটপুট
প্রথম আউটপুট হল প্রাকৃতিক ক্রম ব্যবহার করে তালিকা সাজানোর ফলাফল, যখন দ্বিতীয় আউটপুট হল প্রতিটি স্ট্রিংয়ের দৈর্ঘ্যের উপর ভিত্তি করে আমাদের কাস্টম তুলনাকারী ব্যবহার করে তালিকা সাজানোর ফলাফল।
উদাহরণ 2: একটি নির্দিষ্ট ক্ষেত্রের উপর ভিত্তি করে অবজেক্ট বাছাই করা
আরেকটি উদাহরণ একটি নির্দিষ্ট ক্ষেত্রের উপর ভিত্তি করে বস্তু বাছাই করার জন্য পরিচালিত হয়। এটি অর্জন করতে তুলনাকারী ইন্টারফেস ব্যবহার করা হয়:
আমদানি java.util.ArrayList ;আমদানি java.util.সংগ্রহ ;
আমদানি java.util.কম্পারেটর ;
আমদানি java.util.লিস্ট ;
পাবলিক ক্লাস প্রধান {
পাবলিক স্থির অকার্যকর প্রধান ( স্ট্রিং [ ] args ) {
তালিকা < ব্যক্তি > ব্যক্তি = নতুন অ্যারেলিস্ট <> ( ) ; // নাম, বয়স এবং বেতন বরাদ্দ করুন
ব্যক্তি যোগ করুন ( নতুন ব্যক্তি ( 'এলিস' , 25 , 50000 ) ) ;
ব্যক্তি যোগ করুন ( নতুন ব্যক্তি ( 'বব' , 30 , 75000 ) ) ;
ব্যক্তি যোগ করুন ( নতুন ব্যক্তি ( 'চার্লি' , বিশ , 40000 ) ) ;
তুলনাকারী < ব্যক্তি > বেতন তুলনাকারী = নতুন তুলনাকারী < ব্যক্তি > ( ) {
// বেতনের ভিত্তিতে ব্যক্তিদের সাজান
পাবলিক int তুলনা করা ( ব্যক্তি p1, ব্যক্তি p2 ) {
ফিরে পূর্ণসংখ্যা . তুলনা করা ( p2. বেতন পান ( ) , পৃ 1। বেতন পান ( ) ) ;
}
} ;
সংগ্রহ . সাজান ( ব্যক্তি, বেতন তুলনাকারী ) ; ফিরে মান সাজান
// ব্যক্তিদের একটি সাজানো তালিকা প্রিন্ট করুন
জন্য ( ব্যক্তি ব্যক্তি : ব্যক্তি ) {
পদ্ধতি . আউট . println ( ব্যক্তি ) ;
}
}
}
ক্লাস ব্যক্তি { // নাম, বয়স এবং বেতন নির্ধারণ করুন
ব্যক্তিগত স্ট্রিং নাম ; // একটি ক্লাসের মধ্যে সুযোগ
ব্যক্তিগত int বয়স ;
ব্যক্তিগত int বেতন ;
পাবলিক ব্যক্তি ( স্ট্রিং নাম int বয়স, int বেতন ) {
এই . নাম = নাম ;
এই . বয়স = বয়স ;
এই . বেতন = বেতন ;
}
পাবলিক স্ট্রিং getName ( ) {
ফিরে নাম ;
}
পাবলিক int বয়স ( ) {
ফিরে বয়স ;
}
পাবলিক int বেতন পান ( ) {
ফিরে বেতন ;
}
পাবলিক স্ট্রিং স্ট্রিং ( ) {
ফিরে নাম + '(বয়স' + বয়স + ', বেতন $' + বেতন + ')' ;
}
}
কোডের বর্ণনা নীচে দেওয়া হল:
- একটি ক্লাস বলা হয় ' ব্যক্তি 'তিনটি ক্ষেত্র সহ:' নাম ', ' বয়স ', এবং ' বেতন ' বিবেচিত.
- এর পরে, ব্যক্তি অবজেক্টের একটি সংগ্রহ তাদের বেতনের উপর নির্ভর করে অবরোহ ক্রমে সাজান।
আউটপুট
আউটপুট দেখায় যে বেতন ক্রমানুসারে সাজানো হয়েছে।
উপসংহার
জাভাতে, তুলনাকারী ইন্টারফেস একটি শক্তিশালী টুল যা ব্যবহারকারীদের কাস্টম মানদণ্ডের উপর ভিত্তি করে বস্তু বাছাই করতে দেয়। এটি compare() পদ্ধতিকে ওভাররাইড করে, ব্যবহারকারীরা তাদের নিজস্ব তুলনা ফাংশন সংজ্ঞায়িত করতে পারে এবং বিভিন্ন উপায়ে বস্তুর সংগ্রহ বাছাই করতে এটি ব্যবহার করতে পারে। এই নিবন্ধটি জাভাতে ব্যবহারিক উদাহরণ সহ তুলনাকারী ইন্টারফেস ব্যাখ্যা করেছে।