본문 바로가기
Java

[Java] 배열 정렬하기/오름차순, 내림차순 - Arrays.sort() / primitive type, Object class, boxing

by 가영리 2022. 6. 23.
728x90

알고리즘 문제를 풀다 보면 배열이나 리스트를 정렬해야 하는 경우가 많다. 그럴 때마다 반복문을 이용해 정렬하는 것보다 java.util.Arrays 클래스의 sort()  메서드를 이용하면 간편하게 정렬할 수 있다.

 

java.util.Arrays 클래스

Arrays클래스에는 배열을 다루기 위한 다양한 메소드가 포함되어 있다.

Arryas 클래스의 모든 메소드는 클래스 메소드(static method)이므로, 객체를 생성하지 않고도 바로 사용할 수 있다.

 

Arrays.sort()

이 메서드를 사용하면 배열(Array)이나 리스트(List)를 정렬할 수 있다.

기본 정렬 조건은 오름차순이다.

그 이유는 클래스 내에 기본적으로 구현되어 있는 Comparable Interface의 compareTo 메서드를 기준으로 하기 때문이다.

 

primitive type a[] : byte[], short[], char[], double[], long[], int[], float[]

Object a[] : Integer[], Double[], Character[], String[] 등

sort() 메서드의 종류는 다양하다.

  • - public static void sort(primitive type a[])
  • - public static void sort(primitive type a[], int fromIndex, int toIndex)
  • - public static void sort(Object[] a)
  • -public void sort(Object[] a, int fromIndex, int toIndex)
  • - public static <T> sort(T[] a, Comparator<? super T> c)
  • - public static <T> sort(T[] a, int fromIndex, int toIndex, Comparator<? super T> c)

 

오름차순 정렬

별다른 조건 없이 배열만 파라미터로 전달해주면 오름차순으로 정렬된다.

primitive type 배열 오름차순 정렬 (int)

예제

import java.util.Arrays;

public class ArraySort{
	public static void main(Stringp[] args){
    	int arr[] = {5, 3, 8, 10};
        Arrays.sort(arr);
        System.out.println(Arrays.toString(arr));
    }
}

 

출력 결과

[3, 5, 8, 10]

 

Object 클래스 배열 오름차순 정렬 (String)

예제

import java.util.Arrays;

public class ArraySort{
	public static void main(Stringp[] args){
    	int String = {"ABC", "B", "A", "AB"};
        Arrays.sort(arr);
        System.out.println(Arrays.toString(arr));
    }
}

 

출력 결과

[A, AB, ABC, B]

 

 

내림차순 정렬

Collections 클래스의 reverseOrder() 메서드와 Wrapper 클래스를 이용하여 정렬할 수 있다.

primitive type 배열 내림차순 정렬 (int)

primitive type 배열은 Object 클래스를 상속하는 Wrapper 클래스로 Boxing 해준 뒤 Collections.reverseOrder() 메서드를 사용할 수 있다.

primitive type -> Wrapper class = boxing

primitive type Wrapper class
byte Byte
char Character
int Integer
float Float
double Double
boolean Boolean
long Long
short Short

 

예제

import java.util.Arrays;

public class ArraySort{
	public static void main(Stringp[] args){
    	int arr[] = {5, 3, 8, 10};
        Integer arr2[] = Integer.stream(arr).boxed().toArray(Integer[]::new);
        Arrays.sort(arr2, Collections.reverseOrder());
        System.out.println(Arrays.toString(arr));
    }
}

 

출력 결과

[3, 5, 8, 10]

 

Object 클래스 배열 내림차순 정렬 (String)

Collections.reverOrder()  를 두 번째 파라미터로 넣어주면 된다.

예제

import java.util.Arrays;

public class ArraySort{
	public static void main(Stringp[] args){
    	String arr[] = {"BC", "AB", "A", "C"};
        Arrays.sort(arr, Collections.reverseOrder());
        System.out.println(Arrays.toString(arr));
    }
}

 

출력 결과

[A, AB, BC, C]

 

 

참고

https://yadon079.github.io/2020/java/arrays-sort

 

Arrays.sort() :: 개발자 한선우

Java 배열 정렬 (내림차순 / 오름차순)

yadon079.github.io

https://bangu4.tistory.com/287

 

[Java] int, String 배열 오름차순/내림차순 정렬

배열은 기본적으로 Arrays.Sort()를 이용해서 정렬한다. 1차원 배열은 Sort에 해당 배열을 인자로 넣어 기본적으로 오름차순 정렬을 하는데, 내림차순 정렬을 하기 위해서는 두번째 인자로 Collections.r

bangu4.tistory.com