프로그래밍/JAVA
1차 배열 2차 배열 sort(오름차순, 내림차순)
Baesj
2021. 7. 18. 20:58
1차 배열 오름차순 정렬
Arrays.sort를 사용하면 간단하게 정렬할 수 있다.
//1차원 배열 오름차순 sort
int[] nums = {9,8,1,3,2};
Arrays.sort(nums);
for(int i : nums){
System.out.println(i);
}
결과
1 2 3 8 9
1차 배열 내림차순 정렬
Collections.reverseOrder()를 사용하기 위해서는 Integer 타입이여야 한다.
//1차원 배열 내림차순 sort
Integer[] nums2 = {9,8,1,3,2};
Arrays.sort(nums2, Collections.reverseOrder());
for(int i : nums2){
System.out.println(i);
}
//1차원 배열 내림차순 sort - compare 사용
Integer[] nums4 = {9,8,1,3,2};
Arrays.sort(nums4, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2-o1;
}
});
for(int i : nums4){
System.out.print(i+" ");
}
//1차원 배열 내림차순 sort - compareTo 사용
Integer[] nums6 = {9,8,1,3,2};
Arrays.sort(nums6, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2.compareTo(o1);
}
});
for(int i : nums6){
System.out.print(i+" ");
}
결과
9 8 3 2 1
2차 배열 오름차순 정렬
Arrays.sort에서 Comparator를 이용하면 정렬 할 수 있다.
Comparator는 함수형 인터페이스이기 때문에 람다 표현식으로 바꿔서 간단하게 작성할 수 있다.
//2차원 배열 오름차순 sort
int[][] numsArray2 = {{1,3},{1,2},{3,4},{2,2},{5,1}};
//Arrays.sort(numsArray2, 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];
// }
// }
//});
Arrays.sort(numsArray2, (o1, o2) -> {
if (o1[0] == o2[0]) {
return o1[1] - o2[1];
} else {
return o1[0] - o2[0];
}
});
for(int i=0; i<numsArray2.length; i++){
System.out.println(numsArray2[i][0] + " " + numsArray2[i][1]);
}
//2차원 배열 오름차순 sort - Integer.compare 사용
int[][] numsArray = {{1,3},{1,2},{3,4},{2,2},{5,1}};
//Arrays.sort(numsArray, new Comparator<int[]>() { //@FunctionalInterface 함수형 인터페이스이다
// @Override
// public int compare(int[] o1, int[] o2) {
// if(o1[0]==o2[0]){
// return Integer.compare(o1[1],o2[1]);
// }else{
// return Integer.compare(o1[0],o2[0]);
// }
// }
//});
Arrays.sort(numsArray, (o1, o2) -> { //람다 표현식으로 바꿀 수 있다
if(o1[0]==o2[0]){
return Integer.compare(o1[1],o2[1]);
}else{
return Integer.compare(o1[0],o2[0]);
}
});
for(int i=0; i<numsArray.length; i++){
System.out.println(numsArray[i][0] + " " + numsArray[i][1]);
}
결과
1 2
1 3
2 2
3 4
5 1
2차 배열 내림차순 정렬
오름차순 정렬 코드에서 o1과 o2의 위치만 바꾸면 된다.
//2차원 배열 내림차순 sort
//Arrays.sort(numsArray, new Comparator<int[]>() {
// @Override
// public int compare(int[] o1, int[] o2) {
// if (o1[0] == o2[0]) {
// return o2[1] - o1[1];
// } else {
// return o2[0] - o1[0];
// }
// }
//});
Arrays.sort(numsArray, (o1, o2) -> {
if (o1[0] == o2[0]) {
return o2[1] - o1[1];
} else {
return o2[0] - o1[0];
}
});
for(int i=0; i<numsArray.length; i++){
System.out.println(numsArray[i][0] + " " + numsArray[i][1]);
}
//2차원 배열 내림차순 sort - Integer.compare 사용
//Arrays.sort(numsArray, new Comparator<int[]>() {
// @Override
// public int compare(int[] o1, int[] o2) {
// if (o1[0] == o2[0]) {
// return Integer.compare(o2[1], o1[1]);
// } else {
//
// return Integer.compare(o2[0], o1[0]);
// }
// }
//});
Arrays.sort(numsArray, (o1, o2) -> {
if(o1[0] == o2[0]){
return Integer.compare(o2[1], o1[1]);
}else{
return Integer.compare(o2[0], o1[0]);
}
});
for(int i=0; i<numsArray.length; i++){
System.out.println(numsArray[i][0] + " " + numsArray[i][1]);
}
결과
5 1
3 4
2 2
1 3
1 2