자바 int 배열의 오름차순과 내림차순 정렬에 대해 알아보자
[숫자 오름차순]
int[] numbers = {40,9,4,77,24}
Arrays.sort(numbers); // 결과 {4,9,24,40,77}
[숫자 내림차순]
이 글을 쓰게 된 원인 ... 내림차순
오름차순은 int 선언 후 Arrays.sort 라는 내장 메서드를 사용하면 되지만, 내림차순은 다르다.
- 방법 1)
int 로 선언하였다면?
int[] numbers = {40, 9, 4, 77, 24};
// 스트림을 이용한 내림차순 정렬
int[] sortedNumbers = Arrays.stream(numbers)
.boxed() // int를 Integer로 변환
.sorted(Comparator.reverseOrder()) // 내림차순 정렬
.mapToInt(Integer::intValue) // Integer를 int로 변환
.toArray();
- 방법 2)
처음부터 Wrapper Class인 Integer로 선언하였다면?
Integer[] numbers = {40, 9, 4, 77, 24}; // int 대신 Integer 배열 사용
Arrays.sort(numbers, Collections.reverseOrder()); // 내림차순 정렬
[왜 내림차순은 기본형 배열이 안되는 걸까]
Arrays.sort() 매서드는 Java의 표준 라이브러리 내 java.util.Arrays 클래스에 구현되어 있으며, 내부적으로 다양한 정렬 알고리즘을 사용하여 최적의 성능을 제공한다.
하지만 기본형 배열은 값 자체를 메모리에 직접 저장함으로 단순하고 효율적인 설계를 위해 오름차순 정렬만 지원하도록 구현 되었다.
따라서 Java 에서는 기본형 배열을 역순으로 정렬해야 하는 경우 사용자가 직접 for 문을 사용해 역순으로 값을 정리하도록 유도한다. 아니라면, Collections.reverseOrder() 와 같은 메서드를 사용해 객체 배열에서만 추가 정렬을 지원하는 방식으로 메모리 낭비를 방지한다.
'JAVA' 카테고리의 다른 글
[자료구조] Array 와 List 의 차이 (배열과 리스트의 차이) (0) | 2024.11.27 |
---|---|
BufferedReader 와 BufferedWriter (0) | 2024.11.23 |
Java int 와 Integer 의 차이 (0) | 2024.11.20 |
Java 문자열 뒤집기 - reverse() (0) | 2024.11.19 |
Java 참조 타입 (Reference Type) 왜 쓰나요? (0) | 2024.11.17 |