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

여기에서는 Comparator와 Comparator의 차이점을 분석하고 장단점을 종합적으로 평가하겠습니다.
비교할 수 있는 것 Java?
유사한 in Java 는 자신을 다른 객체와 비교하는 객체입니다. 사용자 정의 객체 목록을 정렬하는 데 도움이 됩니다. Java.lang.인스턴스를 비교하려면 클래스에서 비교 가능한 인터페이스를 구현해야 합니다. 비슷한 인터페이스를 구현하는 객체 배열은 다음과 같이 자동으로 정렬됩니다. Arrays.sort
and Collections.sort
방법.
Comparable에 사용되는 방법
Comparable 인터페이스에서 자주 사용하는 중요한 방법을 강조하고 싶습니다.
비교대상():
CompareTo() 메서드는 문자열에 대한 자연 정렬을 수행하는 데 사용됩니다. 자연 정렬의 의미는 객체에 적용되는 정렬 순서입니다. 예를 들어, 정수를 정렬하는 경우 숫자 순서, 문자열을 정렬하는 경우 알파벳 순서 등입니다.
구문 CompareTo()
방법은 다음과 같습니다.
int compareTo(T obj)
위 구문에서 T는 비교할 개체의 유형을 나타냅니다.
CompareTo()
이 메서드는 객체를 T obj와 비교합니다.
출력:
- 값이 같으면 0을 반환합니다.
- 객체의 값이 더 낮은 경우 이 메서드는 음수 값을 반환합니다.
- 개체의 값이 더 높으면 양수 값을 반환합니다.
비교 가능한 예 Java
다음 프로그램은 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
비교기는 무엇입니까? Java?
비교기 in Java 서로 다른 클래스의 서로 다른 개체를 비교하기 위한 개체입니다. 비교기 인터페이스 Java 사용자 정의 클래스의 개체를 정렬하는 데에도 사용됩니다. 여기에는 비교(Object obj1, Object obj2) 및 같음(Object 요소)이라는 두 가지 중요한 비교기 인터페이스 메서드가 포함되어 있습니다.
비교기에서 사용되는 방법
내 실무에서 나는 종종 비교기 인터페이스의 다음과 같은 중요한 방법에 의존합니다.
비교하다():
Compare()
물건을 주문할 수 있습니다. 이렇게 하려면 비교기 인터페이스를 구현하는 클래스를 만들어야 합니다. 그런 다음 비교 메서드를 재정의해야 합니다.
구문 compare()
방법은 다음과 같습니다.
compare(Object obj1, Object obj2)
위 구문에서 obj1과 obj2는 Compare() 메서드를 사용하여 비교해야 하는 두 개체입니다. compare()
방법.
출력:
- 첫 번째 인수가 두 번째 인수보다 작으면 음의 정수를 반환합니다.
- 첫 번째 인수와 두 번째 인수가 동일한 경우 0을 반환합니다.
- 이 메서드는 첫 번째 인수가 두 번째 인수보다 큰 경우 양의 정수를 반환할 수 있습니다.
관계가 전이적인지 확인해야 합니다. 예를 들어, ((compare(a, b)>0) && (compare(b, c)>0))는 비교(a, c)>0을 의미합니다.
비교 가능한 예 Java
아래에서 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()
방법은 다음과 같습니다.
public boolean equals(Object 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
나는 자주 혼동하는 것을 본다. Java 비교 가능 및 비교기; 주요 차이점은 다음과 같습니다.
비교 기준 | 유사한 | 비교기 |
---|---|---|
방법 | 비교 가능한 제공 compareTo() 요소를 정렬하는 방법 Java. |
비교기는 다음을 제공합니다. compare() 요소를 정렬하는 방법 Java. |
묶음 | 비슷한 인터페이스가 다음 위치에 있습니다. java.lang 패키지. |
비교기 인터페이스가 있습니다. java.util 패키지. |
정렬의 논리 | 정렬 논리는 정렬하려는 개체와 동일한 클래스에 있어야 합니다. | 객체의 다양한 속성을 기반으로 다양한 정렬을 작성하려면 정렬 논리가 별도의 클래스에 있어야 합니다. |
클래스 객체 | 정렬하려는 객체가 있는 클래스는 Comparable 인터페이스를 구현해야 합니다. | 정렬하려는 객체가 있는 클래스는 비교기 인터페이스를 구현할 필요가 없습니다. |
정렬 순서 | 단일 정렬 순서를 제공합니다. | 여러 정렬 순서를 제공합니다. |
정렬 순서 | 이 방법을 사용하면 자연스러운 정렬 순서에 따라 데이터를 정렬할 수 있습니다. | 이 방법은 사용자 정의된 정렬 순서에 따라 데이터를 정렬합니다. |
클래스 | 원래 클래스에 영향을 미칩니다. 즉, 실제 클래스가 변경됩니다. | 원래 클래스에는 영향을 주지 않습니다. 즉, 실제 클래스는 변경되지 않습니다. |
용법 | Calendar, Wrapper 클래스, Date 및 끈 |
타사 클래스의 인스턴스를 정렬하기 위해 구현되었습니다. |
구현 | 모든 래퍼 클래스와 문자열 클래스는 비슷한 인터페이스를 구현합니다. | Comparator의 유일한 구현 클래스는 Collator 및 RuleBasedColator입니다. |
Comparator 및 Comparable을 사용하는 동안의 모범 사례 Java
- 특정 클래스에 대한 비교가 표준인 경우 비교 가능한 인터페이스를 사용하십시오.
- 비교기와 함께 람다를 사용할 수 있습니다.
- 사용 가능한 많은 핵심 클래스는 비슷한 인터페이스를 구현합니다.
- Set이나 Map을 정렬할 때 TreeSet과 TreeMap을 사용할 수 있습니다.
- The
compareTo()
방법은 비교기 및 비교기와 함께 작동합니다. - 더 많은 유연성이 필요한 경우에만 비교기 인터페이스를 사용하십시오.
- The
compareTo()
메소드는 첫 번째 객체가 다른 객체보다 크면 양의 정수를 반환하고, 더 작으면 음수를, 둘 다 같으면 0을 반환합니다.
비교 대상과 비교 대상 중에서 선택하는 방법
결론적으로, 내 실제 경험에 따르면 Comparable과 Comparator를 활용하는 것이 좋습니다. Java 데이터 정렬에 대한 제어 능력이 크게 향상되어 성능과 기능이 모두 향상됩니다.