시작
정렬은 코딩테스트에서도, 실제 프로젝트에서도 가장 자주 쓰이는 기능이다. 이렇게 자주 사용되지만, 자바에서는 배열과 리스트의 정렬 방식이 서로 달라서 헷갈리기 쉽다. 그래서 이번 글에서는 이 부분을 한 번에 정리해보려고 한다. 특히 아래 네 가지 타입은 정렬 방법이 각각 미묘하게 다르므로, 글을 읽기 전에 머릿속에 한 번 떠올려두면 이해가 더 잘 될 것이다.
- int[]
- Integer[]
- List<Integer>
- List<String>
int[] 오름차순 정렬
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] arr = {1, 6, 5, 3, 2};
Arrays.sort(arr);
System.out.println("arr = " + Arrays.toString(arr)); // arr = [1, 2, 3, 5, 6]
}
}
가장 기본적인 오름차순 정렬 방식이다.
int[] 내림차순 정렬
import java.util.Arrays;
import java.util.Collections;
public class Main {
public static void main(String[] args) {
int[] arr = {1, 6, 5, 3, 2};
Integer[] newArr = Arrays.stream(arr)
.boxed()
.toArray(Integer[]::new);
Arrays.sort(newArr, Collections.reverseOrder());
System.out.println("arr = " + Arrays.toString(newArr));
}
}
여기서 중요한 점은
- int[]는 원시 타입 배열임
- Arrays.sort()는 기본적으로 오름차순만 지원 -> 바로 내림차순을 적용할 수 없음
- Comparator를 사용하려면 "객체 배열" 이어야 함
- .boxed() 과정을 통해서 각 int를 Integer 객체로 변환 시켜야함
Arrays는 무엇인가?
Arrays는 자바 표준 라이브러리에 있는 java.util.Arrays 클래스임 (배열을 다루기 위한 유틸리티 클래스)
배열을 생성, 변환, 정렬, 탐색 등 다양한 편리한 기능을 제공
- Arrays.sort(arr) → 배열 정렬
- Arrays.toString(arr) → 배열 내용을 문자열로 변환
- Arrays.asList(arr) → 배열을 리스트로 변환
stream()은 무엇인가?
Stream은 데이터의 흐름을 다루는 일종의 파이프라인 (데이터 자체를 바꾸는 게 아니라, 데이터를 처리할 수 있게 만든다고 보면 됨) 배열, 리스트 같은 컬렉션 데이터를 순회, 필터링, 변환, 집계할 때 사용
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5};
// 배열을 Stream으로 변환
Arrays.stream(arr)
.filter(n -> n % 2 == 0) // 짝수만 걸러냄
.map(n -> n * 2) // 2배로 변환
.forEach(System.out::println); // 출력 4랑 8이 출력됨
}
}
리스트 형식인 경우 (Integer, String)
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> numList = new ArrayList<>(Arrays.asList(1, 6, 5, 3, 2));
List<String> strList = new ArrayList<>(Arrays.asList("AA", "BB", "CC"));
//Integer 오름차순
Collections.sort(numList);
System.out.println("numList = " + numList);
//Integer 내림차순
Collections.sort(numList, Collections.reverseOrder());
System.out.println("numList = " + numList);
//String 오름차순
Collections.sort(strList);
System.out.println("strList = " + strList);
//String 내림차순
Collections.sort(strList, Collections.reverseOrder());
System.out.println("strList = " + strList);
//numList = [1, 2, 3, 5, 6]
//numList = [6, 5, 3, 2, 1]
//strList = [AA, BB, CC]
//strList = [CC, BB, AA]
}
}

참고
https://techvidvan.com/tutorials/how-to-sort-a-list-in-java
'Java' 카테고리의 다른 글
| 자바에서 int[] ↔ List<Integer> 변환 (for문은 이제 그만...) (0) | 2025.12.08 |
|---|---|
| ArrayList가 처음이라면 꼭 알아야 할 핵심 기능 (0) | 2025.12.04 |
| 새벽 코딩하다가 알게 된 String.repeat() - 반복문 대신 이렇게 쓰자! (0) | 2025.12.04 |
