Recent Posts
Recent Comments
Link
- Today
- Yesterday
- Total
메이쁘
[JAVA] java.lang.IllegalArgumentException: Comparison method violates its general contract! 에러 해결 본문
Language/JAVA
[JAVA] java.lang.IllegalArgumentException: Comparison method violates its general contract! 에러 해결
메이쁘 2020. 4. 5. 02:54
오우...
보석 도둑 문제를 풀다가 발생한 오류.
앞으로 코딩할 때 반드시 지켜야겠다고 다짐했다.
저 오류는
말 그대로 비교가 너무 모호하다는 뜻이다.
즉,
Comparable로 값을 비교하는데
이게 같을 때랑 다를 때랑 어떻게 정렬할 지 판단하기 애매하다는 것이다.
참고로 저 오류가 났을 때 내 코드는
@Override
public int compareTo(Jewelry o) {
// Comparison method violates its general contract! 에러 발생.
// 모호해서 생김.
// < 말고 <= 해주면
if(this.weight < o.weight) {
return -1;
}
else {
return 1;
}
}
이랬다.
주석에 적어놨듯이
this.weight 와 o.weight 가 같을 때 어떻게 정렬해줄지 막연하게 else로만 했기 때문에
너무 많은 데이터를 정렬하게 되면
헷갈린다는 거다...
저기서 < 말고 <= 를 넣으니
오류가 싹 사라졌다.
감사합니다.
참고
https://118k.tistory.com/291
'Language > JAVA' 카테고리의 다른 글
[JAVA] Integer.parseInt() 와 Integer.valueOf() 의 차이점 간단 설명! (0) | 2020.05.31 |
---|---|
[JAVA] String, StringBuilder, StringBuffer 의 차이점 (0) | 2020.04.06 |
[JAVA] Arrays.sort() 와 Arrays.parallelSort()의 차이점 간단 정리 (0) | 2020.04.04 |
[JAVA] 문자열 내 문자 정렬하는 방법(ex. 문자열 내 알파벳 사전 순 정렬) (0) | 2020.03.24 |
[JAVA] Char 배열을 String으로 바꾸는 방법 (Char Array to String) (0) | 2020.03.24 |
Comments