이론 정리/java

java배열 다중 정렬하기

철매존 2021. 9. 6. 21:42
728x90

2차원 배열의 정렬의 경우

 

int arr[] = {{1,1}, {1,4}, {3,4}, {1,2}};

이렇게 되어있는 배열 arr을

[1,1][1,2][1,4][3,4] 이렇게 배열하려면

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

이런 식으로 해 주면 된다.

 

그러면 만약에 2번, 3번, 4번....이렇게 더 비교하려면 어떻게 할까?

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

이걸 보면 조금 더 감이 잡힐 것이다...

즉, 배열을 o1, o2이렇게 하나씩 비교하여

0번 노드가 같은 경우

  1번 노드로 if로 확인해 주고

이거를 계속 반복해주면 된다.

 

간단하게 말하자면 o1[여기를 ] o2[기준으로] compare를 사용하면 된다.