Ga0Lee

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

Java

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

가영리 2022. 6. 23. 03:08

알고리즘 문제를 풀다 보면 배열이나 리스트를 정렬해야 하는 경우가 많다. 그럴 때마다 반복문을 이용해 정렬하는 것보다 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