본문 바로가기

공부 자료/자바[JAVA]

[Java] String/int 배열(Array) 정렬 (1차원, 2차원)

[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]
 }