Computer >> Máy Tính >  >> Lập trình >> Java

Sự khác biệt giữa phương thức CompareTo () và so sánh () trong Java là gì?

Có thể so sánh giao diện cung cấp CompareTo () phương pháp sắp xếp các đối tượng. Thứ tự này được gọi là lớp học đặt hàng tự nhiên CompareTo () phương pháp được gọi là phương pháp so sánh tự nhiên . Bộ so sánh giao diện cung cấp các phương pháp để thực hiện hoạt động sắp xếp . Bằng cách sử dụng Bộ so sánh giao diện chúng tôi có thể thực hiện nhiều trình tự sắp xếp . Chúng tôi có thể sắp xếp các đối tượng liên quan đến nhiều thành viên dữ liệu.

so sánhTo ()

CompareTo () phương thức so sánh đối tượng này với một đối tượng o1 và trả về một số nguyên .

Cú pháp

public int compareTo(Object o1)
  • Nó trả về số –ve nếu &chỉ khi đối tượng này nhỏ hơn o1.
  • Nó trả về + số ve nếu &chỉ khi đối tượng này lớn hơn o1.
  • Nó trả về 0 nếu &chỉ khi đối tượng này bằng o1.

Ví dụ

import java.util.*;
class Employee implements Comparable {
   String name;
   int age;
   Employee(String name, int age) {
      this.name = name;
      this.age = age;
   }
   //overridden compareTo method
   @Override
   public int compareTo(Object o) {
      return this.age - ((Employee) o).age;
   }
}
public class ComparableDemo {
   public static void main(String[] args) {
      // CREATION
      List list = new ArrayList<>();
      //INSERTION
      list.add(new Employee("Krishna", 30));
      list.add(new Employee("Archana", 28));
      list.add(new Employee("Vineet", 25));
      list.add(new Employee("Ramesh", 38));
      list.add(new Employee("Alok", 28));
      System.out.println("Before sorting: ");
      for (Employee e : list) {
         System.out.print("[ EMP : age = " + e.age + " ] ");
      }
      //SORTING
      Collections.sort(list);
      System.out.println("After sorting: ");
      for (Employee e : list) {
         System.out.print("[ EMP : age = " + e.age + " ] ");
      }
   }
}

Đầu ra

Before sorting:
[ EMP : age = 2 ] [ EMP : age = 33 ] [ EMP : age = 11 ] [ EMP : age = 34 ] [ EMP : age = 7 ]
After sorting:
[ EMP : age = 2 ] [ EMP : age = 7 ] [ EMP : age = 11 ] [ EMP : age = 33 ] [ EMP : age = 34 ]

so sánh ()

so sánh () phương thức so sánh đối tượng đầu tiên với đối tượng thứ hai và trả về một số nguyên

Cú pháp

public int compare (Object o1,Object o2)
  • Nó trả về số –ve nếu &chỉ khi o1 nhỏ hơn o2
  • Nó trả về + số ve nếu &chỉ khi o1 lớn hơn o2
  • Nó trả về 0 nếu &chỉ khi o1 bằng o2

Ví dụ

import java.util.*;
class Student {
   String name;
   int age, roll;
   Student(String name, int age, int roll) {
      this.name = name;
      this.age = age;
      this.roll = roll;
   }
}
class AgeComparator implements Comparator {
   @Override
   public int compare(Object o1, Object o2) {
      return ((Student) o1).age - ((Student) o2).age;
   }
}
class RollComparator implements Comparator {
   @Override
   public int compare(Object o1, Object o2) {
      return ((Student) o1).roll - ((Student) o2).roll;
   }
}
public class ComparatorDemo {
   public static void main(String[] args) {
      List list = new ArrayList<>();
      list.add(new Student("Ramesh", 30, 20));
      list.add(new Student("Adithya", 7, 10));
      list.add(new Student("Krishna", 25, 5));
      list.add(new Student("Vineet", 24, 15));
      System.out.println("BEFORE SORTING");
      for (Student e : list) {
         System.out.println("[ STU : name = " + e.name + " age = " + e.age + " roll = " + e.roll + "]");
      }
      Collections.sort(list,new AgeComparator());
      System.out.println("AFTER SORTING WITH AGE");
      for (Student e : list) {
         System.out.println("[ STU : name = " + e.name + " age = " + e.age + " ]");
      }
      Collections.sort(list,new RollComparator());
      System.out.println("AFTER SORTING WITH ROLL");
      for (Student e : list) {
         System.out.println("[ STU : name = " + e.name + " roll = " + e.roll + " ]");
      }
   }
}

Đầu ra

BEFORE SORTING
[ STU : name = Ramesh age = 30 roll = 20 ]
[ STU : name = Adithya age = 7 roll = 10 ]
[ STU : name = Krishna age = 25 roll = 5 ]
[ STU : name = Vineet age = 24 roll = 15 ]
AFTER SORTING WITH AGE
[ STU : name = Adithya age = 7 ]
[ STU : name = Vineet age = 24 ]
[ STU : name = Krishna age = 25 ]
[ STU : name = Ramesh age = 30 ]
AFTER SORTING WITH ROLL
[ STU : name = Krishna roll = 5 ]
[ STU : name = Adithya roll = 10 ]
[ STU : name = Vineet roll = 15 ]
[ STU : name = Ramesh roll = 20 ]