자바
[자바] 1차원 배열과 2차원 배열, 가변배열의 오름차순, 내림차순 정렬
imcoding
2022. 6. 16. 23:07
1차원배열의 오름차순 정렬
int[] arr = {5, 4, 3, 2, 1};
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
String[] arr2 = {"e", "d", "c", "b", "a"};
Arrays.sort(arr2);
System.out.println(Arrays.toString(arr2));
결과
arr: [1, 2, 3, 4, 5]
arr2: [a, b, c, d, e]
1차원배열의 내림차순 정렬
int가 아닌 Integer 타입으로 선언해야한다.
Integer[] arr = {1, 2, 3, 4, 5};
Arrays.sort(arr, Collections.reverseOrder());
System.out.println(Arrays.toString(arr));
결과
arr: [5, 4, 3, 2, 1]
Integer[] arr = {1, 2, 3, 4, 5};
Arrays.sort(arr, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2 - o1;
}
});
System.out.println(Arrays.deepToString(arr));
결과
arr: [5, 4, 3, 2, 1]
2차원배열의 오름차순 정렬 방법 1 (Java 8 이상)
int[][] arr = {{3,3}, {1,2}, {1,1}};
Arrays.sort(arr, (o1, o2) -> {
if (o1[0] == o2[0]) {
return o1[1] - o2[1]; // 0열의 data가 서로 같으면 1열을 기준으로 오름차순 정렬한다.
} else{
return o1[0] - o2[0]; // 그렇지 않으면 0열을 기준으로 오름차순 정렬한다.
}
});
System.out.println(Arrays.deepToString(arr));
결과
arr: [[1, 1], [1, 2], [3, 3]]
2차원배열의 오름차순 정렬 방법 2
int[][] arr = {{3,3}, {1,2}, {1,1}};
Arrays.sort(arr, (o1, o2) -> {
return o1[0] == o2[0] ? o2[1] - o1[1] : o1[0] - o2[0];
});
System.out.println(Arrays.deepToString(arr));
// 기본적으로 0열을 비교하여 오름차순 정렬하되, 0열의 크기가 같으면 1열을 비교해서 내림차순 정렬
결과
arr: [[1, 2], [1, 1], [3, 3]]
2차원배열의 내림차순 정렬
int[][] arr = {{3,3}, {1,2}, {1,1}};
Arrays.sort(arr, (o1, o2) -> {
if (o1[0] == o2[0]) {
return o2[1] - o1[1]; // 0열의 data가 서로 같으면 1열을 기준으로 내림차순 정렬한다.
} else{
return o2[0] - o1[0]; // 그렇지 않으면 0열을 기준으로 내림차순 정렬한다.
}
});
System.out.println(Arrays.deepToString(arr));
결과
arr: [[3, 3], [1, 2], [1, 1]]