IllegalArgument

java.lang.IllegalArgumentException은 적합하지 않거나(illegal) 적절하지 못한(inappropriate) 인자를 메소드에 넘겨주었을 때 발생합니다.

Comparison method violates its general contract!

Arrays.sortCollections.sort를 사용한 경우 Comparator가 다음을 지키지 않은 경우에도 발생합니다.

  1. 모든 x, y에 대해서, sgn(compare(x, y)) == -sgn(compare(y, x))
    • compare(x, y)가 예외를 던지는 경우, compare(y, x)도 예외를 던져야 합니다.
  2. ((compare(x, y)>0) && (compare(y, z)>0))이면 compare(x, z)>0
  3. compare(x, y)==0이면 모든 z에 대해서, sgn(compare(x, z))==sgn(compare(y, z))

여기서 sgn(expression)expression이 음수면 -1, 양수면 1, 0이면 0을 의미합니다.