공부 기록
[Java] Arrays.sort 통한 배열 정렬
양바른
2023. 8. 6. 13:27
1차원 배열의 오름차순
import java.util.Arrays;
public class array_sort {
public static void main(String[] args) {
int arr[][] = {{4,3},{8,6},{4,2},{10,7},{1,5},{1,4}};
Arrays.sort(arr,(o1,o2)->Integer.compare(o1[0], o2[0])); // ◀◀◀
for(int i=0 ; i<arr.length ; i++)
System.out.println(arr[i][0] + " " + arr[i][1]);
}
}
또는
import java.util.Arrays;
public class array_sort {
public static void main(String[] args) {
int arr[] = {3,75,98,2,21,11,94};
Arrays.sort(arr);
for (int i : arr)
System.out.print(i + " ");
}
}
출력 결과는 다음과 같다.
2 3 11 21 75 94 98
1차원 배열의 내림차순
import java.util.Arrays;
public class array_sort {
public static void main(String[] args) {
int arr[][] = {{4,3},{8,6},{4,2},{10,7},{1,5},{1,4}};
Arrays.sort(arr,(o1,o2)->Integer.compare(o2[0], o1[0])); // ◀◀◀
for(int i=0 ; i<arr.length ; i++)
System.out.println(arr[i][0] + " " + arr[i][1]);
}
}
또는
import java.util.Arrays;
import java.util.Collections;
public class array_sort {
public static void main(String[] args) {
Integer arr[] = {3,75,98,2,21,11,94};
Arrays.sort(arr, Collections.reverseOrder());
for (int i : arr)
System.out.print(i + " ");
}
}
출력 결과는 다음과 같다.
98 94 75 21 11 3 2
2차원 배열의 오름차순
- 1열 기준으로 오름차순 정렬
import java.util.Arrays;
import java.util.Comparator;
public class array_sort {
public static void main(String[] args) {
int arr[][] = {{4,3},{8,6},{4,2},{10,7},{1,5},{1,4}};
Arrays.sort(arr, new Comparator<int[]>(){
@Override
public int compare(int[] o1, int[] o2) {
return o1[0]-o2[0];
}
}) ;
for (int i=0; i < arr.length ; i++)
System.out.println(arr[i][0]+" "+arr[i][1]);
}
}
출력 결과는 다음과 같다.
1 5
1 4
4 3
4 2
8 6
10 7
- 2열 기준으로 오름차순 정렬
Comparator 함수 부분의 return 만 아래 부분으로 변경하면 된다.
return o1[1]-o2[1];
- 1열과 2열 모두 오름 차순 정렬
import java.util.Arrays;
import java.util.Comparator;
public class array_sort {
public static void main(String[] args) {
int arr[][] = {{4,3},{8,6},{4,2},{10,7},{1,5},{1,4}};
Arrays.sort(arr, 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];
}
});
for(int i=0 ; i<arr.length ; i++)
System.out.println(arr[i][0] + " " + arr[i][1]);
}
}
출력결과는 다음과 같다.
1 4
1 5
4 2
4 3
8 6
10 7
2차원 배열의 내림차순
- 1열 기준으로 내림차순 렬
import java.util.Arrays;
import java.util.Comparator;
public class array_sort {
public static void main(String[] args) {
int arr[][] = {{4,3},{8,6},{4,2},{10,7},{1,5},{1,4}};
Arrays.sort(arr, new Comparator<int[]>(){
@Override
public int compare(int[] o1, int[] o2) {
return o2[0]-o1[0];
}
});
for(int i=0 ; i<arr.length ; i++)
System.out.println(arr[i][0] + " " + arr[i][1]);
}
}
출력 결과는 다음과 같다.
10 7
8 6
4 3
4 2
1 5
1 4
- 2열 기준으로 내림차순 정렬
Comparator 함수 부분의 return 만 아래 부분으로 변경하면 된다.
return o2[1]-o1[1];
- 1열과 2열 기준으로 내림차순 정렬
import java.util.Arrays;
import java.util.Comparator;
public class array_sort {
public static void main(String[] args) {
int arr[][] = {{4,3},{8,6},{4,2},{10,7},{1,5},{1,4}};
Arrays.sort(arr, new Comparator<int[]>(){
@Override
public int compare(int[] o1, int[] o2) {
if(o1[1]==o2[1])
return o2[1]-o1[1];
else
return o2[0]-o1[0];
}
});
for(int i=0 ; i<arr.length ; i++)
System.out.println(arr[i][0] + " " + arr[i][1]);
}
}
출력 결과는 다음과 같다.
10 7
8 6
4 3
4 2
1 5
1 4