프로그래밍/Android-Java
[ANDROID] java.lang.IllegalArgumentException: Comparison method violates its general contract!
채연2
2020. 12. 4. 09:57
앱을 실행시켜놓고 아침에 와서 봤더니 다음과 같은 에러가 나고 제대로 실행이 안되고 있었다...
FATAL EXCEPTION: inference
java.lang.IllegalArgumentException: Comparison method violates its general contract!
at java.util.TimSort.mergeLo(TimSort.java:777)
at java.util.TimSort.mergeAt(TimSort.java:514)
at java.util.TimSort.mergeCollapse(TimSort.java:441)
at java.util.TimSort.sort(TimSort.java:245)
at java.util.Arrays.sort(Arrays.java:1498)
at java.util.ArrayList.sort(ArrayList.java:1470)
at java.util.Collections.sort(Collections.java:201)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.os.HandlerThread.run(HandlerThread.java:65)
구글링을 해본 결과 Comparator Interface를 구현할 때 비교 방법을 명확하게 하지 않은 경우 발생하는 에러라고 한다.
그래서 내가 수정한 코드는 다음과 같다.
public static class Descending implements Comparator<Float> {
@Override
public int compare(Float o1, Float o2) {
if (o1.equals(o2)) return 0;
return o2.compareTo(o1);
}
}
320x100