Comparator.compare() 및 Comparable.compareTo() 구현의 문제를 보고합니다.
다음과 같은 경우가 보고됩니다.
0을 반환하지 않는 것은 자명합니다. 이러한 비교 메서드는 동일한 요소가 나올 때 컨트랙트를 위반하며 예기치 않은 결과를 초래할 수 있습니다. 특히 일부 데이터에서 정렬 시 예외가 발생하며 실패할 수 있습니다.Integer.MIN_VALUE를 반환합니다. 컨트랙트에서 허용되지만, 일부 호출 사이트에서 단항 뺄셈 연산자를 사용하여 비교 메서드의 반환값을 올바르지 않게 반전시킬 수 있으므로 오류가 발생하기 쉽습니다.
Integer.MIN_VALUE의 부정 값은 Integer.MIN_VALUE입니다.
예:
Comparator<String> lambda =
(a, b) -> a.length() > b.length()
? 0
: Math.random() > 0.5 ? -1 : 1;