[Java] 정렬(Arrays.sort)

JUNBEOM PARK·2022년 1월 28일
0

🧨 Java

목록 보기
12/33
post-thumbnail

🤔 Arrays.sort()

java.util.Arrays 유틸리티 클래스를 사용하면 배열(Array)을 정렬, 복제하거나, List로 변환 하는 등의 작업을 쉽게 처리 할 수 있다. 해당 클래스의 sort() 메소드를 사용하면 쉽게 오름차순 정렬이 가능하다.

sort() 메소드는 클래스 메소드(Class method / Static method)로써 Arrays 클래스의 인스턴스 생성없이 바로 사용하면 된다.

오름차순 예시

		int arr[] = {3,2,5};
		
		Arrays.sort(arr);
		System.out.println(Arrays.toString(arr));

본 정렬조건이 오름차순 인 이유는 Class 내에 기본적으로 구현되어있는 Comparable Interface의 compareTo 메소드를 기준으로 하기 때문이다.
Java 에서 인스턴스를 서로 비교하는 클래스들은 모두 Comparable 인터페이스가 구현 되어 있다.

내림차순 예시

		// 첫번째 방법
		for(int i = 0; i < arr.length; i++) {
			System.out.print(arr[arr.length-1-i]+", ");
		}
        
    	        // 두번째 방법
        	for(int i = arr.length-1; i >= 0; i--) {
			System.out.print(arr[i]+", ");
		}

😎 Interface Comparator

정렬 가능한 클래스(Comparable 인터페이스를 구현한 클래스)들의 기본 정렬 기준과 다르게 정렬 하고 싶을 때 사용하는 인터스페이스다.

주로 inner class로 사용 되며, 기본적인 정렬 방법인 오름차순 정렬을 내림차순으로 정렬할 때 많이 사용한다.

2차원 배열을 Interface Comparator로 정렬하는 예시

		int arr2[][] = {{2,90},{1,60},{3,20}}; // => {1,60}, {2,90}, {3,20}
		
		Arrays.sort(arr2, new Comparator<int[]>() {

			@Override
			public int compare(int[] o1, int[] o2) {
				//정렬기준을 작성해주세요 => 첫번째 내용을 기준으로 오름차순
				if(o1[0] < o2[0]) {
					return -1; //자리를 옮기지 마라
				}else if(o1[0] > o2[0]) {
					return 1; // 자리를 옮겨라
				}else {
					return 0;
				}
			}
			
		});
		
		System.out.println(Arrays.deepToString(arr2));
	}
profile
DB 엔지니어👍

0개의 댓글