공부 자료/자바[JAVA]
[Java] String/int 배열(Array) 정렬 (1차원, 2차원)
희희웃는청바지
2023. 6. 16. 18:27
[1차원 배열 정렬]
1. Arrays.sort()
: 오름차순 정렬
int[] num = {1,5,4,3,2};
Arrays.sort(num);
for(int i = 0; i<num.length; i++){
System.out.println(num[i]);
}
//출력 결과 1 2 3 4 5
2. Collections.reverOrder()
: 내림차순 정렬
: Integer 타입이여야 사용이 가능하다.
int[] num = {1,5,4,3,2};
//int 타입의 경우 Integer로 변환 후 정렬을 해야 한다.(문자 배열은 생략 가능)
//Integer[] answer = Arrays.stream(num).boxed().toArray(Integer[]::new);
Arrays.sort(num, Collections.reverseOrder());
for(int i = 0; i<num.length; i++){
System.out.println(num[i]);
}
//출력 결과 5 4 3 2 1
** int 타입의 경우 Integer로 변환 후 내림차순 정렬이 가능함. (오름차순은 따로 변환할 필요 X)
[2차원 배열 정렬]
Arrays.sort와 Comparator 이용
* if문에서 o1[0]과 o2[0]을 비교하기 때문에 각 배열에서 첫번째 원소를 가지고 정렬을 진행하고 있으며, 만약 정렬하고자 하는 기준이 두번째 요소라면 0은 1로, 1은 0으로 변경하면 됨
1. 오름차순 정렬
int[][] num2 = {{1,2}, {4,5}, {2,3}, {3,4}};
Arrays.sort(num2, 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<num2.length; i++{
System.out.println(num2[i][0] + " " + num2[i][1]
}
2. 내림차순 정렬(o1, o2의 위치만 변경하면 됨)
int[][] num2 = {{1,2}, {4,5}, {2,3}, {3,4}};
Arrays.sort(num2, 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] - o2[0];
}
});
for(int i = 0; i<num2.length; i++{
System.out.println(num2[i][0] + " " + num2[i][1]
}