위 사진은 "Alibaba Java Development Manual v1.2.0"의 설명입니다. 여기에 평등 상황이 처리되지 않는다고 말하는 반대 예가 있지만 제 생각에는 다음과 같습니다.
반대 아닌가요
저는 주로 이렇게 사용합니다. 이 곳의 기술을 설명해 주시겠어요? 이유는 무엇입니까?
学习是最好的投资!
더 자세히 이해한 결과 문제의 근본 원인은 JDK7의 정렬 구현이 TimSort로 변경되었다는 것입니다. 자세한 내용은 이 문서를 참조하세요. http://blog.2baxb.me/archives...
처음 답변을 드렸을 땐 작성자님의 질문 의도를 잘 이해하지 못해 조금 성급하게 답변드린 점 사과드립니다. 이전 답변 내용은 오프라인으로 나누어져 있습니다. 답변 댓글에 이전 답변에 대한 @wanghaa님의 논의가 있어서 그대로 유지됩니다. 문제를 알려주셔서 감사합니다.
위 코드는 -1을 출력합니다. 비교된 두 값이 동일하면 0을 반환해야 합니다. -1을 반환하는 것은 확실히 잘못된 것이므로 동일한 상황은 별도로 처리해야 합니다.
0과 같을 때 판단해야 함
@gemoji의 토론 후 마침내 이해했습니다. Effective Java에서 말한 것과 마찬가지로 Comparator는 Equals를 구현하는 데 필수가 아닙니다. JDK7 이후 버전에서는 TimSort가 정렬에 사용됩니다. . 알고리즘, 결과적으로 비교기는 다음과 동일하게 구현되어야 합니다.
<<Effective Java Chinese Version>> 사실, 반례는 실제로 전이성 과 대칭성
더 자세히 이해한 결과 문제의 근본 원인은 JDK7의 정렬 구현이 TimSort로 변경되었다는 것입니다. 자세한 내용은 이 문서를 참조하세요.
http://blog.2baxb.me/archives...
처음 답변을 드렸을 땐 작성자님의 질문 의도를 잘 이해하지 못해 조금 성급하게 답변드린 점 사과드립니다.
이전 답변 내용은 오프라인으로 나누어져 있습니다. 답변 댓글에 이전 답변에 대한 @wanghaa님의 논의가 있어서 그대로 유지됩니다. 문제를 알려주셔서 감사합니다.
으아아아
위 코드는 -1을 출력합니다. 비교된 두 값이 동일하면 0을 반환해야 합니다. -1을 반환하는 것은 확실히 잘못된 것이므로 동일한 상황은 별도로 처리해야 합니다.
0과 같을 때 판단해야 함
@gemoji의 토론 후 마침내 이해했습니다.
Effective Java에서 말한 것과 마찬가지로 Comparator는 Equals를 구현하는 데 필수가 아닙니다.
JDK7 이후 버전에서는 TimSort가 정렬에 사용됩니다. . 알고리즘, 결과적으로 비교기는 다음과 동일하게 구현되어야 합니다.
<<Effective Java Chinese Version>> 사실, 반례는 실제로 전이성
을 파괴하는 강력한 제안입니다.과 대칭성