자바에서 배열이나 리스트를 정렬하려고 한다면 java.util.Arrays 클래스의 sort() 메서드를 사용하시면 따로 정렬 로직을 짜지 않아도 한번의 메소드 호출로 간편하게 배열이나 리스트를 정렬할 수 있다. Arrays클래스는 배열의 복사, 항목 정렬, 검색과 같은 배열을 조작 기능을 가지고 있다.

 

1. 기본 정렬(오름차순)

 

import java.util.Arrays;

public class Test {
	public static void main(String[] args) {
		
		int[] arr = {4,17,25,31,1};
		String[] arr2 = {"apple","orange","banana","pear","peach","melon"};
		
		Arrays.sort(arr);
		Arrays.sort(arr2);
		
		for(int i : arr) {
			System.out.print(i+" ");
			
		}
		System.out.println();
		
		for(String i : arr2) {
			System.out.print(i+" ");
		}
	}
}

 

 

2. 내림차순 정렬 - Collections / Comparator

 

배열을 내림차순으로 정렬할 때는 Collections 클래스의 reverseOrder() 함수를 사용하면 된다. 만약 기본 타입 배열을 내림차순으로 정렬하고 싶다면 기본 타입의 배열을 래퍼클래스로 만들어 Comparator를 두번째 인자에 넣어주어야 역순으로 정렬할 수 있다.

String 자료형은 기본 타입이 아니다.

주의 할 점은, byte, char, double, short, long, int, float 같은 Primitive Type 자료형 배열에는 적용이 불가능하다. 따라서 Integer, String, Double 같은 Wrapper Class를 사용해야 한다!!

import java.util.Arrays;
import java.util.Collections;

public class Test {
	public static void main(String[] args) {
		
		Integer[] arr = {4,17,25,31,1};
		String[] arr2 = {"apple","orange","banana","pear","peach","melon"};
		
		Arrays.sort(arr, Collections.reverseOrder());
		Arrays.sort(arr2, Collections.reverseOrder());
		
		for(int i : arr) {
			System.out.print(i+" ");
			
		}
		System.out.println();
		
		for(String i : arr2) {
			System.out.print(i+" ");
		}
	}
}

/* 
출력
31 25 17 4 1 
pear peach orange melon banana apple 
*/

 

 

 

3. 2차원 배열 정렬 - Lambda 표현식

 

 

import java.util.Arrays;


public class Test {
	public static void main(String[] args) {
		
		Integer[][] arr = {{2,6}, {1,8},{1,2}};
		
		Arrays.sort(arr, (x1, x2)->{
			if(x1[0] == x2[0]) { // 첫 원소가 같다면
				return Integer.compare(x1[1], x2[1]); //2번째 원소 비교 
			}else {
				return Integer.compare(x1[0], x2[0]);
			}
		});
		for(int i=0; i < arr.length; i++) {
			System.out.println();
			
			for(int j=0; j<arr[i].length; j++) {
				System.out.print(arr[i][j] + " ");
			}
		}
		
	}
}

/*
출력
1 2 
1 8 
2 6 
*/
반응형

+ Recent posts