Comparator를 잘못 작성하셨습니다.
compare(a, a)는 항상 0을 반환할 수 있도록 하셔야 합니다.
2358번 - 평행선
sort 함수가 내던질 수 있는 예외 목록에
IllegalArgumentException - (optional) if the comparator is found to violate the Comparator contract
라고 명시되어 있습니다.
sort 함수는 Comparator 가 잘못 되었는지 확인을 "적극적"으로 하지는 않습니다. 다만 , 입력 데이터에 따라 sort 가 정렬 알고리즘을 실행하는 도중에 Comparator 가 잘못되었다는 "증거"를 발견할 수 있고, 이 때 저 예외를 내뱉습니다. 정렬 알고리즘이 그런 증거를 발견하지 못했다면 예외 없이 (프로그래머가 의도한 것일 수도 있고, 그렇지 않을 수도 있는) 정렬 결과를 반환합니다.
댓글을 작성하려면 로그인해야 합니다.
citizen 6년 전
배열의 크기를 벗어나는 경우가 유력해보이는데,
while문이 배열의 크기-1까지만 작동하고 while문 밖에서
배열이 쓰이는 일이 없으니 배열 크기문제도 사실상 아니라고
추측을 합니다만..
에러의 원인이 뭘까요?