Java에서 Comparable.compareTo의 반환 값은 무엇을 의미합니까?
반환 차이점은 무엇이며 0, 반환 1및 반환 -1의 compareTo()자바는?
공식 정의
Comparable.compareTo (T) 의 참조 문서에서 :
이 개체를 주문을 위해 지정된 개체와 비교합니다. 이 개체가 지정된 개체보다 작거나 같거나 크므로 음의 정수, 0 또는 양의 정수를 반환합니다.
구현자는 모든 x 및 y에 대해 sgn (x.compareTo (y)) == -sgn (y.compareTo (x))를 확인해야합니다. (이는 y.compareTo (x)가 예외를 throw하는 경우 x.compareTo (y)가 예외를 throw해야 함을 의미합니다.)
구현자는 또한 관계가 전이적임을 확인해야합니다. (x.compareTo (y)> 0 && y.compareTo (z)> 0)은 x.compareTo (z)> 0을 의미합니다.
마지막으로, 구현자는 x.compareTo (y) == 0이 모든 z에 대해 sgn (x.compareTo (z)) == sgn (y.compareTo (z))를 의미하는지 확인해야합니다.
강력히 권장되지만 (x.compareTo (y) == 0) == (x.equals (y))가 반드시 필요한 것은 아닙니다. 일반적으로 Comparable 인터페이스를 구현하고이 조건을 위반하는 모든 클래스는이 사실을 명확하게 나타내야합니다. 권장되는 언어는 "참고 :이 클래스에는 같음과 일치하지 않는 자연스러운 순서가 있습니다."
전술 한 설명에서 sgn (expression) 표기법은 expression의 값이 음수인지, 0인지, 양수인지에 따라 -1, 0, 1 중 하나를 반환하도록 정의 된 수학적인 signum 함수를 지정합니다.
내 버전
요컨대 :
this.compareTo(that)
보고
- 이것이 <that이면 음의 정수
- 이것이 == 이면 0
- 이것이> that이면 양의 정수
이 메소드의 구현이 < >and 의 실제 의미를 결정하는 곳 ==( ==Java의 객체 ID 연산자의 의미는 아닙니다 )
예
"abc".compareTo("def")
abc이전의 알파벳순으로 0보다 작은 것을 산출합니다 def.
Integer.valueOf(2).compareTo(Integer.valueOf(1))
2가 1보다 크기 때문에 0보다 큰 결과를 얻을 수 있습니다.
몇 가지 추가 사항
참고 : Comparable을 구현하는 클래스는 javadocs에서 compareTo () 메서드의 의미를 선언하는 것이 좋습니다.
참고 : 다음 중 하나 이상을 읽어야합니다.
- Sun Java Tutorial에있는 Collection Trail 의 Object Ordering 섹션
- Joshua Bloch의 효과적인 Java , 특히 항목 12 : Comparable 구현 고려
- Maurice Naftalin의 Java Generics and Collections , Philip Wadler, 3.1 장 : 비교 가능
: 경고 당신은 compareTo의 존재의 반환 값에 의존해서는 안 -1, 0그리고 1. 당신은 항상 테스트해야한다 x < 0, x == 0,는 x > 0각각.
이 니모닉을 사용합니다.
a.compareTo(b) < 0 // a < b
a.compareTo(b) > 0 // a > b
a.compareTo(b) == 0 // a == b
당신은 징후를 유지하고 항상 결과 compareTo()를 0 과 비교합니다.
간단히 대답하십시오 : (상황을 검색하십시오)
- 1 .compareTo ( 0 ) ( return : 1 )
- 1 .compareTo ( 1 ) ( 반환 : 0 )
- 0 .comapreTo ( 1 ) ( 반환 : -1 )
예를 들어 "a"와 "b"를 비교하려는 경우, 즉 ( "a"== this)
- a <b 인 경우 음의 정수
- 만약 a == b
- a> b 인 경우 양의 정수
정렬에 사용할 수 있으며 0은 "같음"을 의미하고 -1은 "덜"과 "더 (크게)"를 의미합니다.
0보다 작은 반환 값은 왼쪽 피연산자가 더 작다는 것을 의미하고 값이 0보다 크면 왼쪽 피연산자가 더 큽니다.
int x = thisObject.compareTo(anotherObject);
이 compareTo()메서드는 다음 특성을 가진 int를 반환합니다.
- 부정
If thisObject < anotherObject - 제로
If thisObject == anotherObject - 양
If thisObject > anotherObject
'Program Club' 카테고리의 다른 글
| 클래스 이름을 C #의 문자열로 가져옵니다. (0) | 2020.11.17 |
|---|---|
| AJAX 도메인 간 호출 (0) | 2020.11.17 |
| 이터 러블을 일정한 크기의 청크로 분할하는 방법 (0) | 2020.11.16 |
| WinRT의 UI 스레드에서 코드 실행 (0) | 2020.11.16 |
| Python은 키 목록이 사전에 있는지 확인합니다. (0) | 2020.11.16 |