정렬 Arrays.sort, Collections.sort

OneTwoThree·2023년 8월 14일
0

자바

목록 보기
12/19

int, Integer 정렬

        /**
         *  primitive type int 정렬
         */
        int[] arr = {3, 5, 2, 1, 4};
        // 오름차순 정렬
        Arrays.sort(arr);
        // 내림차순 정렬
        List<Integer> list = new ArrayList<>();
        for (int num : arr) {
            list.add(Integer.valueOf(num));
        }
        Collections.sort(list, Collections.reverseOrder());
        
        /**
         *  Integer 정렬
         */
        List<Integer> list2 = new ArrayList<>(Arrays.asList(3, 5, 2, 4, 1));
        // 오름차순 정렬
        Collections.sort(list2);
        // 내림차순 정렬
        Collections.sort(list2, Collections.reverseOrder());

int를 내림차순 정렬하기 위해서 Integer로 바꿔준다.

클래스 정렬

import java.util.Arrays;

class Point implements  Comparable{
    int x;
    int y;

    public Point(int x, int y) {
        this.x = x;
        this.y = y;
    }

    @Override
    public String toString() {
        return "Point{" +
                "x=" + x +
                ", y=" + y +
                '}';
    }

    @Override
    public int compareTo(Object o) {
        Point p = (Point)o;
        return this.x-p.x; // x 좌표에 의해 오름차순 정렬
    }
}

public class Main {
    public static void main(String[] args) {
        Point[] arr = {new Point(2,1),new Point(3,1),new Point(1,1)};
        Arrays.sort(arr);
        for (Point point : arr) {
            System.out.println("point = " + point);
        }


    }
}

정렬 기준이 따로 없거나 직접 만든 클래스를 정렬하기 위해서는 Comparable 인터페이스를 구현해야 한다.
compareTo(Obejct o) 메소드를 구현해야 하는데, 기준은 아래와 같다
나 - o : 오름차순
o - 나 : 내림차순

즉, 위의 예시에서 return p.x-this.x 로 변경하면 x 좌표에 의해 내림차순 정렬 한다.

1개의 댓글

comment-user-thumbnail
2023년 8월 14일

잘 읽었습니다. 좋은 정보 감사드립니다.

답글 달기