이차원 배열 정렬
Lambda 사용 - Java 8이상
Comparator.comparing() 사용
import java.util.Arrays;
import java.util.Comparator;
public class ArraySortExample {
public static void main(String[] args) {
int[][] arr = new int[][]{{5, 40}, {3, 50}, {1, 30}, {4, 20}, {2, 10}};
// Lambda 사용
// 1. 0번째 요소 기준 오름차순 정렬
Arrays.sort(arr, (o1, o2) -> o1[0] - o2[0]);
// 결과: {1, 30}, {2, 10}, {3, 50}, {4, 20}, {5, 40}
// 2. 1번째 요소 기준 오름차순 정렬
Arrays.sort(arr, (o1, o2) -> o1[1] - o2[1]);
// 결과: {2, 10}, {4, 20}, {1, 30}, {5, 40}, {3, 50}
// 3. 1번째 요소 기준 내림차순 정렬
Arrays.sort(arr, (o1, o2) -> o2[1] - o1[1]);
// 결과: {3, 50}, {5, 40}, {1, 30}, {4, 20}, {2, 10}
// 4. 0번째 요소 기준 오름차순, 동일한 값이 있으면 1번째 요소 기준 내림차순 정렬
Arrays.sort(arr, (o1, o2) -> {
if (o1[0] == o2[0]) {
return o2[1] - o1[1];
}
return o1[0] - o2[0];
});
// 결과: {1, 30}, {2, 10}, {3, 50}, {4, 20}, {5, 40}
// Comparator.comparing() 사용 예제
Arrays.sort(arr, Comparator.comparingInt((int[] o) -> o[0])); // 0번째 요소 기준 오름차순
// 결과: {1, 30}, {2, 10}, {3, 50}, {4, 20}, {5, 40}
Arrays.sort(arr, Comparator.comparingInt((int[] o) -> o[0]).reversed()); // 0번째 요소 기준 내림차순
// 결과: {5, 40}, {4, 20}, {3, 50}, {2, 10}, {1, 30}
Arrays.sort(arr, Comparator.comparingInt((int[] o) -> o[1])); // 1번째 요소 기준 오름차순
// 결과: {2, 10}, {4, 20}, {1, 30}, {5, 40}, {3, 50}
Arrays.sort(arr, Comparator.comparingInt((int[] o) -> o[1]).reversed()); // 1번째 요소 기준 내림차순
// 결과: {3, 50}, {5, 40}, {1, 30}, {4, 20}, {2, 10}
}
}