자바 기본형 배열 내림차순 정렬

2024. 1. 18. 21:40· Java
int[] arr = {5,1,3,4,2};
// 오름차순 정렬
Arrays.sort(arr);

위와 같이 정수형 배열을 오름차순으로 정렬하려면 Arrays.sort메소드를 사용하면 된다. 특정 구간을 정렬하려고 하면 Arrays.sort(arr, 시작, 끝)을 통해 구간을 오름차순으로 정렬할 수 있다.

 

내림차순으로 정렬하고 싶다면 어떻게 해야할까?

매개변수가 없는 sort 자체는 오름차순 정렬밖에 지원하지 않는다. 그럼 매개변수에 비교기준을 반대로 넣으면 되지 않을까?
Arrays.sort((num1,num2)-> num2 - num1);와 같이 말이다.

 

하지만, 이는 불가능한데 sort메서드가 Comparator 함수형 인터페이스를 매개변수로 사용하고 있기 때문이다. Comparator 인터페이스는 객체간의 비교가 가능하게 해주는 인터페이스이다.

 

그러나, 우리가 정렬(비교)하고자 하는 배열은 기본형 배열이다.
따라서, 이를 정렬하고자 하면 int 형을 객체로 만들어야 한다. int의 래퍼 클래스인Integer 클래스를 사용하면 된다.

int[] arr = {1,2,3,4,5};
Integer[] boxedArray = Arrays.stream(arr)
.boxed() // 기본형인 int형을 참조형인 Integer 클래스로 바꿈
.toArray(Integer[]::new); // Integer[] 배열로 바꿔저장
Integer[] boxedArray = new Integer[arr.length];
for (int i = 0; i < arr.length; i++) {
boxedArray[i] = arr[i];
}

래퍼 클래스를 활용해 기본 자료형 배열을 Integer클래스형 배열로 바꿔줬다.

Arrays.sort(boxedArray, Comparator.reverseOrder());
Arrays.sort(boxedArray, (num1, num2) -> num2 - num1);
System.out.println(Arrays.toString((boxedArray));
// 출력결과 : [5, 4, 3, 2, 1]

이제 위와 같이 Comparator 인터페이스의 reverseOrder 메서드나 직접 람다식을 작성해 내림차순으로 정렬할 수 있다.

greatwhite
greatwhite
greatwhite
우직하게
greatwhite
전체
오늘
어제
  • 분류 전체보기
    • Projects
      • 스위프] Woory
    • Python
    • Java
      • Spring
    • JPA
    • Problem Solving
      • 백준
      • 프로그래머스
    • Today I Learned

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Euclidean
  • 백준
  • knapsack
  • 롬복
  • Mermaid
  • dp
  • spring
  • 그리디
  • 다익스트라
  • Java
  • erd 문법
  • @default
  • BFS
  • sql
  • dfs
  • 파이썬
  • 티스토리챌린지
  • 오블완
  • 자바
  • MVC
  • JPA
  • implementation
  • pigeonhole principle
  • math
  • 비트마스킹
  • python
  • 스프링
  • backtracking
  • vi
  • 프로그래머스

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.1
greatwhite
자바 기본형 배열 내림차순 정렬
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.