java

[java] 2차원 배열의 정렬 방법(오류_i cannot be cast to java.lang.comparable)

seulhasony 2023. 6. 6. 18:57

아래와 같이 Collections 프레임워크를 사용해 sort메서드로 2차원 배열에서 정렬을 하려고 하니, 

int[][] arr = new int[10][2];
Arrays.sort(arr);

 

i cannot be cast to java.lang.comparable

 

해당 오류가 발생했다.

 

찾아보니,  2차원 배열은 2차원에서의 비교대상이 없기 때문에 이와 같은 오류가 발생하는 것이었다.

그래서 추가한 코드는 아래와 같다!

    Arrays.sort(arr,(o1,o2) ->{
       if(o1[0] == o2[0]){
           return Integer.compare(o1[1],o2[1]);
       }else{
           return Integer.compare(o1[0],o2[0]);
       }
    });

해설) 

1차원이 동일한 경우는 2차원끼리 비교하고, 그렇지 않을 경우는 1차원에서만 비교한다.

ex) [2,2] [2,3] => 1차원이 동일하여 2차원의 비교가 필요함