Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java에서 compareTo() 및 compare() 메서드의 차이점은 무엇입니까?

<시간/>

비교 가능 인터페이스는 compareTo() 를 제공합니다. 객체의 순서를 지정하는 방법. 이 순서를 클래스의 라고 합니다. 자연스러운 순서compareTo() 방법을 자연 비교 방법이라고 합니다. . 비교기 인터페이스는 정렬 작업을 수행하는 방법을 제공합니다. . 비교기 사용 여러 정렬 순서를 수행할 수 있는 인터페이스 . 여러 데이터 멤버를 기준으로 개체를 정렬할 수 있습니다.

compareTo()

compareTo() 메소드는 이 객체를 o1 객체와 비교하고 정수를 반환합니다. .

구문

public int compareTo(Object o1)
  • 이 객체가 o1보다 작은 경우에만 &이면 -ve 숫자를 반환합니다.
  • 이 개체가 o1보다 큰 경우에만 &인 경우 +ve 숫자를 반환합니다.
  • 이 객체가 o1인 경우에만 &이면 0을 반환합니다.

예시

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 + " ] ");
      }
   }
}

출력

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 ]

비교()

비교() 메서드는 첫 번째 개체를 두 번째 개체와 비교하고 정수를 반환합니다.

구문

public int compare (Object o1,Object o2)
  • o1이 o2보다 작은 경우에만 -ve 숫자를 반환합니다.
  • o1이 o2보다 큰 경우에만 &이면 +ve 숫자를 반환합니다.
  • o1이 o2와 같을 때만 &이면 0을 반환합니다.

예시

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 + " ]");
      }
   }
}

출력

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 ]