자바 - 배열 정렬

손찬호·2024년 5월 7일

CodeSnippet

목록 보기
1/2

원소 1개인 배열 정렬하기

원소가 1개씩만 있는 배열은 이상하게 int[]로 하면 sort에서 에러가 발생했다.
Integer[]로 선언해주니까 잘 된다.

import java.util.*;
import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException{
        Integer[] task = {8,13,12,10};

        // task[i]를 오름차순 정렬
        // 방법 1
        // Arrays.sort(task);

        // 방법 2
        // Arrays.sort(task, (o1, o2) -> o1 - o2);

        // 방법 3
        // Arrays.sort(task, new Comparator<Integer>(){
        //     @Override
        //     public int compare(Integer o1, Integer o2){
        //         return o1 - o2;
        //     }
        // });

        
        // task[i]를 내림차순 정렬 
        // 방법 1
        // Arrays.sort(task, (o1, o2) -> o2 - o1);
        
        // 방법 2
        // Arrays.sort(task, new Comparator<Integer>(){
        //     @Override
        //     public int compare(Integer o1, Integer o2){
        //         return o2 - o1;
        //     }
        // });

        System.out.println(Arrays.toString(task));
    }
}

원소 2개인 배열 정렬하기

예제코드

import java.util.*;
import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException{
        int[][] task = {{2,8},{1,13},{2,13},{3,10}};
        
        // task[i][j]일 때 task[i][1]는 내림차순
        // task[i][1]값이 같다면 task[i][0]를 오름차순으로 정렬 
        // 방법 1
        Arrays.sort(task, (a, b) -> {
            if(a[1] == b[1]){
                return a[0] - b[0]; //오름차순
                // return b[0] - a[0]; //내림차순
            }
            return b[1] - a[1]; //내림차순
            // return a[1] - b[1]; //오름차순
        });
        
        // 방법 2
        // Arrays.sort(task, new Comparator<int[]>(){
        //     @Override
        //     public int compare(int[] o1, int[] o2){
        //         if(o1[1] == o2[1]){
        //             return o1[0] - o2[0]; // 오름차순
        //             // return o2[0] - o1[0]; // 내림차순
        //         }
        //         return o2[1] - o1[1]; // 내림차순
        //         // return o1[1] - o2[1]; // 오름차순
        //     }
        // });

        System.out.println(Arrays.deepToString(task));
    }
}

예제 출력

[[1, 13], [2, 13], [3, 10], [2, 8]]
profile
매일 1%씩 성장하려는 주니어 개발자입니다.

0개의 댓글