আমি ক্লাসগুলি দেখেছি যা তুলনামূলক এবং তুলনামূলক উভয়ই প্রয়োগ করে । এটার মানে কি? আমি কেন একে অপরকে ব্যবহার করব?
আমি ক্লাসগুলি দেখেছি যা তুলনামূলক এবং তুলনামূলক উভয়ই প্রয়োগ করে । এটার মানে কি? আমি কেন একে অপরকে ব্যবহার করব?
উত্তর:
নীচের পাঠ্যটি তুলনামূলক বনাম তুলনামূলক থেকে এসেছে
তুলনাযোগ্য
একটি তুলনামূলক অবজেক্ট অন্য বস্তুর সাথে নিজেকে তুলনা করতে সক্ষম। শ্রেণীর নিজেই java.lang.Comparableইন্টারফেসটি এর উদাহরণগুলির সাথে তুলনা করতে সক্ষম করে।
comparator
একটি তুলনামূলক বস্তু দুটি পৃথক বস্তুর তুলনা করতে সক্ষম। শ্রেণিটি তার দৃষ্টান্তগুলির তুলনা করে না, তবে কিছু অন্যান্য শ্রেণির উদাহরণগুলির তুলনা করে। এই তুলনামূলক শ্রেণি অবশ্যই java.util.Comparatorইন্টারফেস প্রয়োগ করতে হবে ।
বাস্তবায়নের Comparableঅর্থ " আমি নিজেকে অন্য কোনও জিনিসের সাথে তুলনা করতে পারি " "যখন একক প্রাকৃতিক ডিফল্ট তুলনা হয় তখন এটি সাধারণত কার্যকর হয়।
বাস্তবায়নের Comparatorঅর্থ " আমি অন্য দুটি বস্তুর তুলনা করতে পারি " "এটি সাধারণত কার্যকর হয় যখন কোনও ধরণের দুটি উদাহরণের তুলনা করার একাধিক উপায় থাকে - যেমন আপনি বয়স, নাম ইত্যাদি দ্বারা লোকের তুলনা করতে পারেন This
Personপ্রয়োগ করে এটি Comparableকরতে পারবেন না, কারণ আপনি তখন দুটি ব্যক্তির তুলনা কীভাবে পরিবর্তন করতে পারবেন না ।
Person। 2) তুলনাকারী, উদাহরণস্বরূপ, PersonAgeComparatorযা দুটি পৃথক সত্ত্বার তুলনা করতে সক্ষম হয় এবং সিদ্ধান্ত নিতে পারে যে নির্দিষ্ট ক্রমের মধ্যে প্রথমে কোনটি আসবে। 3) সাজানো কোড, যা সত্তা এবং একটি তুলনাকারীর সংগ্রহ গ্রহণ করে এবং ক্রমটি নির্ধারণ করতে তুলনামূলক ব্যবহার করে এই সংগ্রহটি সাজায়।
তুলনীয় কোনও শ্রেণিকে তার নিজস্ব তুলনা প্রয়োগ করতে দেয়:
তুলনা করে, তুলনামূলক একটি বাহ্যিক তুলনা:
উভয় বাস্তবায়নে, আপনি এখনও তুলনা করতে চান তা চয়ন করতে পারেন । জেনেরিকের সাহায্যে আপনি এটি ঘোষণা করতে পারেন, এবং এটি সংকলন-সময় পরীক্ষা করা উচিত। এটি সুরক্ষার উন্নতি করে, তবে উপযুক্ত মান নির্ধারণ করাও একটি চ্যালেঞ্জ।
গাইডলাইন হিসাবে, আমি সাধারণত সবচেয়ে সাধারণ শ্রেণি বা ইন্টারফেস ব্যবহার করি যার সাথে সেই বস্তুর তুলনা করা যায়, সব ক্ষেত্রেই আমি কল্পনা করি ... যদিও খুব সংক্ষিপ্ত সংজ্ঞা নেই! :-(
Comparable<Object>সংকলন-সময়ে আপনাকে সমস্ত কোডগুলিতে এটি ব্যবহার করতে দেয় (যা প্রয়োজনে ভাল, বা না হলে খারাপ এবং আপনি কম্পাইল-সময় ত্রুটিটি আলগা করেন); আপনার বাস্তবায়নের সাথে অবজেক্টগুলি মোকাবেলা করতে হবে, এবং প্রয়োজন মতো কাস্ট করতে হবে তবে শক্তিশালী উপায়ে।Comparable<Itself> বিপরীতে খুব কঠোর।মজার বিষয়, আপনি যখন নিজেকে সাবক্লাসে সাবক্লাস করেন, সাবক্লাসটি অবশ্যই তুলনামূলক হতে হবে এবং এটি সম্পর্কে দৃust় হতে হবে (বা এটি লিসকভের মূলনীতিটি ভঙ্গ করবে এবং আপনাকে রানটাইম ত্রুটি দেবে)।
java.lang.Comparable
Comparableইন্টারফেস বাস্তবায়নের জন্য , শ্রেণিকে অবশ্যই একটি পদ্ধতি প্রয়োগ করতে হবেcompareTo()
int a.compareTo(b)
যার ক্লাসটি আপনি বাছাই করতে চান আপনাকে অবশ্যই তাকে ক্লাসে পরিবর্তন করতে হবে। যাতে প্রতি ক্লাসে কেবল একটি সাজানোর ক্রম তৈরি করা যায়।
java.util.Comparator
তুলনামূলক ইন্টারফেস প্রয়োগ করতে, শ্রেণিকে অবশ্যই একটি একক পদ্ধতি প্রয়োগ করতে হবে compare()
int compare (a,b)
Comparableসাধারণত পছন্দ হয়। তবে কখনও কখনও কোনও শ্রেণি ইতিমধ্যে প্রয়োগ করে Comparableতবে আপনি একটি পৃথক সম্পত্তি বাছাই করতে চান। তারপরে আপনি একটি ব্যবহার করতে বাধ্য হন Comparator।
কিছু ক্লাস আসলে Comparatorsসাধারণ ক্ষেত্রে সরবরাহ করে; উদাহরণস্বরূপ, বাছাই করার সময় Stringগুলি ডিফল্ট ক্ষেত্রে সংবেদনশীল হয়, তবে একটি স্ট্যাটিকও Comparatorবলা হয় CASE_INSENSITIVE_ORDER।
আমি ওয়েবে যে তুলনামূলক এবং তুলনীয় পেয়েছি তার মধ্যে কয়েকটি পার্থক্য রয়েছে:
যদি আপনি দেখতে পান তবে এই দুটিয়ের মধ্যে যৌক্তিক পার্থক্য হ'ল জাভাতে তুলনাকারী তাকে সরবরাহিত দুটি বস্তুর তুলনা করুন, যখন তুলনামূলক ইন্টারফেসটি "এই" রেফারেন্সটিকে নির্দিষ্ট বস্তুর সাথে তুলনা করে।
জাভাতে তুলনীয় বস্তুর প্রাকৃতিক ক্রম প্রয়োগ করতে ব্যবহৃত হয়। জাভা এপিআই স্ট্রিংয়ে, তারিখ এবং মোড়কের ক্লাসগুলি তুলনামূলক ইন্টারফেস প্রয়োগ করে।
জাভাতে যদি কোনও শ্রেণি তুলনামূলক ইন্টারফেস প্রয়োগ করে তবে সেই সংগ্রহ বা তালিকা বা অ্যারেটি সংগ্রহের মাধ্যমে সংগ্রহ বাছাই করা যাবে স্বয়ংক্রিয়ভাবে বাছাই করা যাবে সংগ্রহ () বা অ্যারে.সোর্ট () পদ্ধতি এবং অবজেক্টের তুলনা করে সেখানে প্রাকৃতিক আদেশের ভিত্তিতে তুলনামূলক পদ্ধতি দ্বারা নির্ধারিত।
জাভাগুলিতে তুলনামূলক প্রয়োগকারী অবজেক্টগুলি কোনও সাজানো মানচিত্রের চাবি বা একটি বাছাই করা সেটগুলিতে উদাহরণস্বরূপ ট্রিসেটের জন্য উপাদান হিসাবে ব্যবহার করা যেতে পারে, কোনও তুলনামূলক নির্দিষ্ট না করেই।
সাইট: জাভাতে তুলনামূলক এবং তুলনামূলক কীভাবে ব্যবহার করবেন? উদাহরণ সহ
আরও পড়ুন: জাভাতে তুলনামূলক এবং তুলনামূলক কীভাবে ব্যবহার করবেন? উদাহরণ সহ
Comparableপ্রাকৃতিক ক্রম সহ বস্তুর জন্য। এটি কীভাবে অর্ডার করা হবে তা অবজেক্ট নিজেই জানে।
Comparatorপ্রাকৃতিক অর্ডার ছাড়াই বা যখন আপনি অন্য কোনও ক্রম ব্যবহার করতে চান তখন অবজেক্টগুলির জন্য।
তুলনামূলক এবং তুলনীয় ইন্টারফেসের মধ্যে পার্থক্য
Comparable অন্য বস্তুর সাথে ব্যবহার করে নিজেকে তুলনা করতে ব্যবহৃত হয়।
Comparator দুটি ডেটাটাইপগুলি তুলনা করতে ব্যবহৃত হয় অবজেক্টস।
যদি আপনি দেখতে পান তবে এই দুটিয়ের মধ্যে যৌক্তিক পার্থক্য Comparatorজাভাতে রয়েছে তাকে সরবরাহ করা দুটি বস্তুর তুলনা করুন, যখন Comparableইন্টারফেসটি "এই" রেফারেন্সটিকে নির্দিষ্ট বস্তুর সাথে তুলনা করে।
Comparableজাভাতে অবজেক্টের প্রাকৃতিক ক্রম প্রয়োগ করতে ব্যবহৃত হয়। জাভা এপিআই স্ট্রিংয়ে, তারিখ এবং মোড়কের ক্লাসগুলি Comparableইন্টারফেস প্রয়োগ করে ।
কোন শ্রেণীর বাস্তবায়ন তাহলে Comparableজাভা ইন্টারফেস তারপর যে বস্তুর সংগ্রহে পারেন Listবা Arrayব্যবহার করার মাধ্যমে স্বয়ংক্রিয়ভাবে বাছাই করা যেতে পারে Collections.sort()বা Array.sort()পদ্ধতি এবং বস্তুর প্রাকৃতিক দ্বারা সংজ্ঞায়িত অর্ডার উপর ভিত্তি করে সাজানো হবে compareToপদ্ধতি।
Comparableজাভাতে কার্যকর করা বস্তুগুলি কোনও বাছাই করা মানচিত্রের বা একটি বাছাই করা TreeSetসেটগুলিতে উদাহরণস্বরূপ , বাছাই করা মানকগুলিতে কী হিসাবে ব্যবহার করা যেতে পারে Comparator।
তুলনামূলক এবং তুলনাকারী প্রয়োগের জন্য আমার টিকা লিবিব:
public class Person implements Comparable<Person> {
private String firstName;
private String lastName;
private int age;
private char gentle;
@Override
@CompaProperties({ @CompaProperty(property = "lastName"),
@CompaProperty(property = "age", order = Order.DSC) })
public int compareTo(Person person) {
return Compamatic.doComparasion(this, person);
}
}
আরও উদাহরণ দেখতে লিঙ্কটি ক্লিক করুন। compamatic