Program Club

Java에서 Comparable.compareTo의 반환 값은 무엇을 의미합니까?

proclub 2020. 11. 16. 22:23
반응형

Java에서 Comparable.compareTo의 반환 값은 무엇을 의미합니까?


반환 차이점은 무엇이며 0, 반환 1및 반환 -1compareTo()자바는?


공식 정의

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 () 메서드의 의미를 선언하는 것이 좋습니다.

참고 : 다음 중 하나 이상을 읽어야합니다.

: 경고 당신은 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)

  1. a <b 인 경우 음의 정수
  2. 만약 a == b
  3. a> b 인 경우 양의 정수

정렬에 사용할 수 있으며 0은 "같음"을 의미하고 -1은 "덜"과 "더 (크게)"를 의미합니다.

0보다 작은 반환 값은 왼쪽 피연산자가 더 작다는 것을 의미하고 값이 0보다 크면 왼쪽 피연산자가 더 큽니다.


int x = thisObject.compareTo(anotherObject);

compareTo()메서드는 다음 특성을 가진 int를 반환합니다.

  • 부정 If thisObject < anotherObject
  • 제로 If thisObject == anotherObject
  • If thisObject > anotherObject

참고 URL : https://stackoverflow.com/questions/3767090/what-do-the-return-values-of-comparable-compareto-mean-in-java

반응형