Java의 비교 가능 및 비교기 – 차이점

Java에서 Comparable과 Comparator의 주요 차이점

  • Java에서 Comparable은 자신을 다른 객체와 비교하는 객체인 반면, Comparator는 다른 클래스의 다른 객체를 비교하는 객체입니다.
  • Comparable은 Java에서 요소를 정렬하는 CompareTo() 메서드를 제공하는 반면, Comparator는 Java에서 요소를 정렬하는 Compare() 메서드를 제공합니다.
  • 비교 가능한 인터페이스는 java.lang 패키지에 있는 반면 Comparator 인터페이스는 java.util 패키지에 있습니다.
  • Comparable은 단일 정렬 순서를 제공하는 반면 Comparator는 여러 정렬 순서를 제공합니다.
  • Comparable은 원래 클래스에 영향을 미치는 반면 Comparator는 원래 클래스에 영향을 미치지 않습니다.
Java의 Comparable과 Comparator의 차이점
Java의 비교기와 비교기의 차이점

Java에서 비교 가능이란 무엇입니까?

유사한 Java에서 자신을 다른 객체와 비교하는 객체입니다. 사용자 정의 개체 목록을 정렬하는 데 도움이 됩니다. java.lang.Comparable 인터페이스는 인스턴스를 비교하기 위해 클래스에 의해 구현되어야 합니다. 유사한 인터페이스를 구현하는 객체 배열은 Arrays.sort 및 Collections.sort 메서드에 의해 자동으로 정렬됩니다.

Java의 비교기 란 무엇입니까?

비교기 Java에서는 서로 다른 클래스의 서로 다른 개체를 비교하는 개체입니다. Java의 비교기 인터페이스는 사용자 정의 클래스의 객체를 정렬하는 데에도 사용됩니다. 여기에는 비교(Object obj1, Object obj2) 및 같음(Object 요소)이라는 두 가지 중요한 비교기 인터페이스 메서드가 포함되어 있습니다.

Java의 Comparable과 Comparator의 차이점

Java Comparable과 Comparator의 주요 차이점은 다음과 같습니다.

유사한 비교기
Comparable은 Java에서 요소를 정렬하는 CompareTo() 메서드를 제공합니다. Comparator는 Java에서 요소를 정렬하는 Compare() 메서드를 제공합니다.
유사한 인터페이스가 java.lang 패키지에 있습니다. 비교기 인터페이스는 java.util 패키지에 있습니다.
정렬 논리는 정렬하려는 개체와 동일한 클래스에 있어야 합니다. 객체의 다양한 속성을 기반으로 다양한 정렬을 작성하려면 정렬 논리가 별도의 클래스에 있어야 합니다.
정렬하려는 객체가 포함된 클래스는 비교 가능한 인터페이스를 구현해야 합니다. 정렬하려는 객체가 있는 클래스는 비교기 인터페이스를 구현할 필요가 없습니다.
단일 정렬 순서를 제공합니다. 여러 정렬 순서를 제공합니다.
이 방법을 사용하면 자연스러운 정렬 순서에 따라 데이터를 정렬할 수 있습니다. 이 방법은 사용자 정의된 정렬 순서에 따라 데이터를 정렬합니다.
원래 클래스에 영향을 미칩니다. 즉, 실제 클래스가 변경됩니다. 원래 클래스에는 영향을 주지 않습니다. 즉, 실제 클래스는 변경되지 않습니다.
달력, 래퍼 클래스, 날짜 및 기타 방법으로 API에서 자주 구현됩니다.
타사 클래스의 인스턴스를 정렬하기 위해 구현되었습니다.
모든 래퍼 클래스와 String 클래스는 비슷한 인터페이스를 구현합니다. Comparator의 유일한 구현 클래스는 Collator 및 RuleBasedColator입니다.

Comparable에 사용되는 방법

더 폴로wing Comparable 인터페이스에서 사용되는 중요한 방법입니다.

비교대상():

CompareTo() 메서드 문자열에 대한 자연 정렬을 수행하는 데 사용됩니다. 자연 정렬의 의미는 객체에 적용되는 정렬 순서입니다(예: 정수 정렬의 경우 숫자 순서, 문자열의 경우 알파벳 순서 등).

CompareTo() 메서드의 구문은 다음과 같습니다.

int compareTo(T obj)

위 구문에서 T는 비교할 개체의 유형을 나타냅니다.

CompareTo() 메서드 구성요소ares T obj를 가진 객체.

출력:

  • 값이 같으면 0을 반환합니다.
  • 객체의 값이 더 작은 경우 이 메서드는 음수 값을 반환합니다.
  • 개체의 값이 더 높으면 양수 값을 반환합니다.

CompareTo() 메서드 예:

더 폴로wing Java 비교 예제 프로그램은 두 문자 "a"와 "b"를 비교하는 모습을 보여줍니다. 문자 "a"는 알파벳순으로 "b" 앞에 옵니다.

따라서 출력은 -1입니다. 문자 "b"는 알파벳순으로 "a" 뒤에 옵니다. 따라서 출력은 1입니다. 문자 "a"와 "b"는 모두 동일합니다. 따라서 출력은 0입니다.

public class Sample_String {
    public static void main(String[] args) {
        String str_Sample = "a";
        System.out.println("Compare To 'a' b is : " + str_Sample.compareTo("b"));
        str_Sample = "b";
        System.out.println("Compare To 'b' a is : " + str_Sample.compareTo("a"));
        str_Sample = "b";
        System.out.println("Compare To 'b' b is : " + str_Sample.compareTo("b"));
    }
}

산출

Compare To 'a' b is : -1
Compare To 'b' a is : 1
Compare To 'b' b is : 0

비교기에서 사용되는 방법

FOLLOwing 비교기 인터페이스에 사용되는 중요한 방법은 다음과 같습니다.

비교하다():

Compare()를 사용하면 개체를 정렬할 수 있습니다. 이렇게 하려면 비교기 인터페이스를 구현하는 클래스를 만들어야 합니다. 그런 다음 비교 방법을 재정의해야 합니다.

Compare() 메서드의 구문은 다음과 같습니다.

compare(Object obj1, Object obj2)

위 구문에서 obj1과 obj2는 Compare() 메서드를 사용하여 비교해야 하는 두 개체입니다.

출력:

  • 첫 번째 인수가 두 번째 인수보다 작으면 음의 정수를 반환합니다.
  • 첫 번째 인수와 두 번째 인수가 동일한 경우 XNUMX을 반환합니다.
  • 이 메서드는 첫 번째 인수가 두 번째 인수보다 큰 경우 양의 정수를 반환할 수 있습니다.

관계가 전이적인지 확인해야 합니다. 예를 들어, ((compare(a, b)>0) && (compare(b, c)>0))는 비교(a, c)>0을 의미합니다.

비교 방법 예:

아래의 Java 비교기 예제 프로그램에는 6개가 있습니다. 변수. "x", "y", "p", "q", "r" 및 "s"입니다. "x"의 값인 -1, 20은 "y"의 값인 30보다 작으므로 출력은 0입니다. "p"의 값인 40은 "q"의 값인 40과 같으므로 출력은 XNUMX입니다. .

import java.lang.Integer; 
public class example { 
    public static void main(String args[]) 
    { 
        int x = 20; 
        int y = 30; 
        // as 10 less than 20, 
        // Output will be a value less than zero 
        System.out.println(Integer.compare(x, y)); 
        int p = 40; 
        int q = 40; 
        // as 30 equals 30, 
        // Output will be zero 
        System.out.println(Integer.compare(p, q)); 
        int r = 20; 
        int s = 7; 
        // as 15 is greater than 8, 
        // Output will be a value greater than zero 
        System.out.println(Integer.compare(r, s)); 
    } 
}

출력:

-1
0
1

같음():

Equals()는 숫자 객체가 인수로 전달된 객체와 같은지 여부를 확인합니다.

equals() 메서드의 구문은 다음과 같습니다.

공개 부울은 같음(객체 o)

이 메소드는 1) 모든 객체 2) 반환 값이라는 두 가지 매개 변수를 사용합니다. 전달된 인수가 null이 아니고 동일한 숫자 값을 갖는 유사한 유형의 객체인 경우 true를 반환합니다.

같음 메서드 예:

아래 예에서는 네 가지 변수를 서로 비교하고 있습니다. 세 개의 변수는 정수 유형이고 하나는 short 유형입니다. 첫 번째 결과는 p 값(5)이 q 값(20)과 같지 않기 때문에 false입니다.

두 번째 결과는 변수 p와 r의 값이 동일하여 5이기 때문에 참입니다. 마지막으로 변수 p와 s에 할당된 값이 다르기 때문에 출력은 거짓입니다.

public class Test { 
   public static void main(String args[]) {
      Integer p = 5;
      Integer q = 20;
      Integer r =5;
      Short s = 5;
      System.out.println(p.equals(q));  
      System.out.println(p.equals(r)); 
      System.out.println(p.equals(s));
   }
}

산출

false
true
false

Java에서 Comparator 및 Comparable을 사용하는 모범 사례

  • 특정 클래스에 대한 비교가 표준인 경우 비교 가능한 인터페이스를 사용하십시오.
  • 비교기와 함께 람다를 사용할 수 있습니다.
  • 사용 가능한 많은 핵심 클래스는 비슷한 인터페이스를 구현합니다.
  • TreeSet 및 TreeMap을 사용하거나 Set 또는 Map을 정렬하는 동안 사용할 수 있습니다.
  • CompareTo() 메서드는 비교기 및 비교기와 함께 작동합니다.
  • 더 많은 유연성이 필요한 경우에만 비교기 인터페이스를 사용하십시오.
  • CompareTo() 메서드는 첫 번째 객체가 다른 객체보다 크면 양의 정수를 반환하고, 작으면 음수를, 둘 다 같으면 XNUMX을 반환합니다.