728x90


 

자바의 여러 API 중 정렬에 관련된 메소드가 있다.

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

 

 

 


 

배열의 오름차순 정렬

Arrays.sort()메서드의 매개값으로 기본 타입 배열이나 String배열을 지정해주면 자동으로 오름차순 정렬이 되는 것을 볼 수 있다.

int[] arr = {1, 26, 17, 25, 99, 44, 303};

Arrays.sort(arr);

 

여기서 배열이 제대로 정렬되었는지를 확인하기 위해 기본적인 toStirng 메소드를 써주면 원하는 결과값이 아닌 

D@46a49e6 같은 값이 나온다.

자바에서 배열 내용을 출력해보려고 배열 자체에서 toString()을 사용하면 배열의 내용이 아니라 배열의 주소값이 출력되기 때문이다.

이를 해결하기 위해 배열을 간편히 문자열로 만들어주는 Arrays.toString()을 써주어야 한다.

System.out.println("Sorted arr[] : " + Arrays.toString(arr));

// Sorted arr[] : [1, 17, 25, 26, 44, 99, 303] 정상적으로 출력

 

 

 


 

 

배열의 내림차순 정렬

내림차순으로 정렬하려면 sort()의 인자에 추가로 Collections.reverseOrder()를 전달해야 한다.

* 사실 Collections.reverseOrder() Comparator 객체이다. Comparator는 직접 구현해야하지만, 내림차순은 자주 사용되기 때문에 Collections에서 기본으로 제공해주고 있다. 

Integer[] arr = {1, 26, 17, 25, 99, 44, 303};

Arrays.sort(arr, Collections.reverseOrder());

System.out.println("Sorted arr[] : " + Arrays.toString(arr));

// Sorted arr[] : [303, 99, 44, 26, 25, 17, 1] 정상적으로 출력

 

 

 


 

 

배열 일부분만 정렬

Arrays.sort()메서드의 매개값으로 배열, 시작 index, 끝 index를 넣어주면 일부분만 정렬할 수 있다.

 

Integer[] arr = {1, 26, 17, 25, 99, 44, 303};

Arrays.sort(arr, 0, 4); // 인덱스가 0,1,2,3 인 요소만 정렬

System.out.println("Sorted arr[] : " + Arrays.toString(arr));

// Sorted arr[] : [1, 17, 25, 26, 99, 44, 303] 정상적으로 출력

 

 

 

 

 

 

 

 

 

 

 

 

 

'JAVA' 카테고리의 다른 글

익명 클래스(Anonymous class)  (0) 2021.09.03
업 캐스팅(Up Casting)  (0) 2021.08.31
JAVA API 를 이용한 주사위 통계  (0) 2021.08.26
래퍼런스와 스태틱(static)  (0) 2021.08.21
자바의 입력기능 스캐너(Scanner)  (0) 2021.08.04
복사했습니다!