본문 바로가기

Java

[JAVA] Arrays.sort()

int의 Arrays.sort()

int[] n = {331, 75, 65, 90, 802, 524, 2, 66};
Arrays.sort(n);

결과 : [2, 65, 66, 75, 90, 331, 524, 802]

 

int에서 바로 내림차순은 불가능

Integer[] integers = new Integer[n.length];
for (int i = 0; i < n.length; i++) {
    integers[i] = n[i];
}

Integer로 바꾸어 주고 내림차순으로 정렬

Arrays.sort(integers, new Comparator<Integer>() { // 직접 구현하기
    @Override
    public int compare(Integer o1, Integer o2) {
        return o2 - o1;
    }
});
Arrays.sort(integers, (o1, o2) -> o2 - o1); // 람다식을 이용하기
Arrays.sort(integers, Comparator.reverseOrder()); // reverseOrder()를 이용하기

결과 : [802, 524, 331, 90, 75, 66, 65, 2]

 

String의 Arrays.sort()

String[] s = {"C", "A", "B", "D", "F", "A"};
Arrays.sort(s);

결과 : [A, A, B, C, D, F]

 

String의 내림차순 정렬

String[] s = {"C", "A", "B", "D", "F", "A"};
Arrays.sort(s, new Comparator<String>() { // 직접 구현하기
    @Override
    public int compare(String o1, String o2) {
        return o2.compareTo(o1);
    }
});
Arrays.sort(s,(o1, o2) -> o2.compareTo(o1)); // 람다식을 이용하기
Arrays.sort(s,Comparator.reverseOrder()); // reverseOrder()를 이용하기

결과 : [F, D, C, B, A, A]

 

배열 중 일부분만 정렬하기 Arrays.sort(배열, 시작, 끝)

int[] n = {331, 75, 65, 90, 802, 524, 2, 66};
Arrays.sort(n, 0, 5);

결과 : [65, 75, 90, 331, 802, 524, 2, 66] 0~4까지 정렬되었다.

String[] s = {"C", "A", "B", "D", "F", "A"};
Arrays.sort(s, 0, 4);

결과 : [A, B, C, D, F, A] 다른 자료형도 가능할 것이다.

 

배열 채우기 -> Arrays.fill(배열, 채울내용)

int[] m = new int[10];
Arrays.fill(m, 10);

결과 : [10, 10, 10, 10, 10, 10, 10, 10, 10, 10]

String[] st = new String[10];
Arrays.fill(st, "a");

결과 : [a, a, a, a, a, a, a, a, a, a] 다른 자료형도 가능할 것이다.

 

직접 구현하는 방법을 이용하여 다양한 경우에서 정렬이 가능하게 할 수 있다.

이중 배열의 경우 배열의 0번끼리 비교를 하다가 만약 같다면 1번을 비교하여 정렬하게 만들 수 있다.

int[][] n = {{4,8}, {4,5}, {10,14}, {11,13}, {5,12}, {3,7}, {1,4}};
Arrays.sort(n, new Comparator<int[]>() {
    @Override
    public int compare(int[] o1, int[] o2) {
        if (o1[0] == o2[0]) return o1[1] - o2[1];
        else return o1[0] - o2[0];
    }
});

결과 : [[1, 4], [3, 7], [4, 5], [4, 8], [5, 12], [10, 14], [11, 13]]

이렇게 직접 조건을 만들어서 정렬을 할 수 있다.

'Java' 카테고리의 다른 글

[JAVA] 정렬 여러가지  (0) 2023.04.26
[JAVA] 디자인 패턴  (0) 2023.03.07