[Java] 정렬과 람다식

·2025년 1월 13일

알고리즘 스터디

목록 보기
26/26

Java에서 배열을 정렬할 때는 Arrays.sort(배열)함수를 사용하면 된다

오름차순 정렬

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] numbers = {3, 5, 1, 4, 2};
        
        Arrays.sort(numbers);
        
        System.out.println(Arrays.toString(numbers)); // [1, 2, 3, 4, 5]
    }
}

내림차순 정렬

import java.util.Arrays;
import java.util.Collections;

public class Main {
    public static void main(String[] args) {
        Integer[] numbers = {3, 5, 1, 4, 2}; // Integer[]로 해야 Collections.reverseOrder()를 사용할 수 있음
        
        Arrays.sort(numbers, Collections.reverseOrder());
        
        System.out.println(Arrays.toString(numbers)); // [5, 4, 3, 2, 1]
    }
}

내림차순 정렬하는 또 다른 방법

람다식

  1. 첫 번째 인자 - 두 번째 인자 => 오름차순
  2. 두 번째 인자 - 첫 번째 인자 => 내림차순
List<Integer> list = new ArrayList<>();

        list.add(3);

        list.add(5);
        list.add(100);
        list.add(50);
        list.add(20);
        list.add(70);
        list.add(34);
        list.add(57);

        Collections.sort(list, (l1,l2) -> l1- l2); 

        System.out.println(list);

        Collections.sort(list, (l1,l2) -> l2- l1);

        System.out.println(list);

여러 조건을 기준으로 정렬하는 경우

Arrays.sort(array2, (a, b) -> {
    int cmp = Integer.compare(b[0], a[0]); // 첫 번째 열 내림차순
    if (cmp != 0) return cmp;
    return Integer.compare(a[1], b[1]); // 두 번째 열 오름차순
});

이차원 배열의 첫 번째 인자를 비교하여 정렬하는 경우

int[][] array2 = {{3, 2, 1}, {6, 5, 4}, {9, 8, 7}};

        Arrays.sort(array2, (o1, o2) -> o2[0]- o1[0]); // 첫 번째 열을 기준으로 내림차순 정렬

        for (int[] row : array2) {
            System.out.println(Arrays.toString(row));
        }

        Arrays.sort(array2, (o1, o2) -> o1[0]- o2[0]); // 첫 번째 열을 기준으로 오름차순 정렬

        for (int[] row : array2) {
            System.out.println(Arrays.toString(row));
        }
profile
꾸준히 공부하기

0개의 댓글