তুলনীয় -java.lang.Comparable: int compareTo(Object o1)
একটি তুলনামূলক অবজেক্ট অন্য বস্তুর সাথে নিজেকে তুলনা করতে সক্ষম। শ্রেণীর নিজস্ব উদাহরণগুলি তুলনা করতে সক্ষম হওয়ার জন্য জাভা.লং.কম্পেবল ইন্টারফেস প্রয়োগ করতে হবে।
- প্রদত্ত বস্তুর সাথে বর্তমান বস্তুর তুলনা করতে সক্ষম।
- এটি ব্যবহার করে আমরা
only one sort sequence
উদাহরণগুলির বৈশিষ্ট্যের ভিত্তিতে প্রয়োগ করতে পারি । গো EX:Person.id
- স্ট্রিং, র্যাপার ক্লাস, তারিখ, ক্যালেন্ডার এর মতো কিছু পূর্বনির্ধারিত শ্রেণি তুলনামূলক ইন্টারফেস প্রয়োগ করেছে।
তুলক -java.util.Comparator: int compare(Object o1, Object o2)
একটি তুলনামূলক বস্তু দুটি পৃথক বস্তুর তুলনা করতে সক্ষম। শ্রেণিটি তার দৃষ্টান্তগুলির তুলনা করে না, তবে কিছু অন্যান্য শ্রেণির উদাহরণগুলির তুলনা করে। এই তুলনামূলক শ্রেণীর অবশ্যই java.util.Comparator ইন্টারফেস প্রয়োগ করতে হবে।
- একই ধরণের যে কোনও দুটি বস্তুর তুলনা করতে সক্ষম।
- এটি ব্যবহার করে আমরা প্রতিটিগুলির প্রয়োগ
many sort sequence
ও নামকরণ করতে পারি , উদাহরণগুলির বৈশিষ্ট্যের উপর ভিত্তি করে। গো EX:Person.id, Person.name, Person.age
- আমরা কাস্টমাইজড বাছাইয়ের জন্য আমাদের পূর্বনির্ধারিত শ্রেণিতে তুলনামূলক ইন্টারফেস প্রয়োগ করতে পারি।
উদাহরণ:
public class Employee implements Comparable<Employee> {
private int id;
private String name;
private int age;
private long salary;
// Many sort sequences can be created with different names.
public static Comparator<Employee> NameComparator = new Comparator<Employee>() {
@Override
public int compare(Employee e1, Employee e2) {
return e1.getName().compareTo(e2.getName());
}
};
public static Comparator<Employee> idComparator = new Comparator<Employee>() {
@Override
public int compare(Employee e1, Employee e2) {
return Integer.valueOf(e1.getId()).compareTo(Integer.valueOf(e2.getId()));
}
};
public Employee() { }
public Employee(int id, String name, int age, long salary){
this.id = id;
this.name = name;
this.age = age;
this.salary = salary;
}
// setters and getters.
// Only one sort sequence can be created with in the class.
@Override
public int compareTo(Employee e) {
//return Integer.valueOf(this.id).compareTo(Integer.valueOf(e.id));
//return Character.toString(this.name.charAt(0)).compareToIgnoreCase(Character.toString(e.name.charAt(0)));
if (this.id > e.id) {
return 1;
}else if(this.id < e.id){
return -1;
}else {
return Character.toString(this.name.charAt(0)).compareToIgnoreCase(Character.toString(e.name.charAt(0)));
}
}
public static void main(String[] args) {
Employee e1 = new Employee(5, "Yash", 22, 1000);
Employee e2 = new Employee(8, "Tharun", 24, 25000);
List<Employee> list = new ArrayList<Employee>();
list.add(e1);
list.add(e2);
Collections.sort(list); // call @compareTo(o1)
Collections.sort(list, Employee.nameComparator); // call @compare (o1,o2)
Collections.sort(list, Employee.idComparator); // call @compare (o1,o2)
}
}
- কাস্টমাইজড বাছাইয়ের জন্য আমরা তুলনামূলক @compare (o1, o2) তুলনায় অন্য পরিস্থিতিতে আমরা তুলনীয় @compareTo (o1) এর জন্য যাই, যদি পরিবর্তিত কোডের সাথে আমরা একাধিক ক্ষেত্রকে বাছাই করতে চাই তবে আমরা তুলনামূলক ব্যবহার করি।
জন্য জাভা 8 ল্যামডা: comparator আমার পোস্টে পড়ুন।