Java_Sort an Array
자바에서 배열 정렬하기 (Java Sort an Array)
자바에서 배열을 정렬하는 방법은 Arrays.sort()
메서드와 Collections
API를
활용하는 방법이 있습니다. 자바는 기본적으로 **퀵 정렬(Dual-Pivot Quicksort)**을 사용해 배열을 정렬하며, 이 방법은 평균적으로 **O(n log n)**의 시간 복잡도를 가집니다.
다양한 데이터 타입(정수, 실수, 문자열 등)에 맞춰 배열을 정렬할 수 있으며, 커스텀 정렬을 적용하거나 내림차순으로 정렬하는 방법도 가능합니다.
1. Arrays.sort()
를 사용한 배열 정렬
Arrays.sort()
메서드는 배열을 오름차순으로 정렬하는 가장 기본적인 방법입니다. 이 메서드는 정수, 실수, 문자열 등의 배열을 쉽게 정렬할 수
있습니다.
1.1 정수 배열을 정렬하는 예제
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
// 정수 배열 선언
int[] numbers = {5, 2, 9, 1, 5, 6};
// 배열을 오름차순으로 정렬
Arrays.sort(numbers);
// 결과 출력
System.out.println("정렬된 배열: " + Arrays.toString(numbers));
}
}
설명:
- *
Arrays.sort()
*는 배열을 오름차순으로 정렬합니다. Arrays.toString()
메서드를 사용해 배열을 문자열로 변환하여 출력합니다.
출력:
정렬된 배열: [1, 2, 5, 5, 6, 9]
1.2 문자열 배열을 정렬하는 예제
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
// 문자열 배열 선언
String[] words = {"apple", "orange", "banana", "grape"};
// 배열을 오름차순으로 정렬
Arrays.sort(words);
// 결과 출력
System.out.println("정렬된 배열: " + Arrays.toString(words));
}
}
출력:
정렬된 배열: [apple, banana, grape, orange]
2. 내림차순 정렬
배열을 내림차순으로 정렬하려면 Arrays.sort()
메서드와
Comparator
인터페이스를 함께 사용해야 합니다. 자바에서는 기본 데이터 타입(예: int
,
double
)은 **Comparator
**를 사용할 수 없으므로, 이를 **객체 타입(Integer, Double 등)**으로 변환한 후 내림차순 정렬을 수행해야
합니다.
2.1 정수 배열을 내림차순으로 정렬하는 예제
import java.util.Arrays;
import java.util.Collections;
public class Main {
public static void main(String[] args) {
// Integer 배열 선언 (기본형 int 배열은 Comparator 사용 불가)
Integer[] numbers = {5, 2, 9, 1, 5, 6};
// 배열을 내림차순으로 정렬
Arrays.sort(numbers, Collections.reverseOrder());
// 결과 출력
System.out.println("내림차순으로 정렬된 배열: " + Arrays.toString(numbers));
}
}
설명:
Collections.reverseOrder()
: 배열을 내림차순으로 정렬하기 위한 Comparator를 제공합니다.- *기본 데이터 타입(
int
,double
)**은Comparator
를 사용할 수 없기 때문에Integer
또는Double
등의 객체 타입 배열을 사용해야 합니다.
출력:
내림차순으로 정렬된 배열: [9, 6, 5, 5, 2, 1]
2.2 문자열 배열을 내림차순으로 정렬하는 예제
import java.util.Arrays;
import java.util.Collections;
public class Main {
public static void main(String[] args) {
// 문자열 배열 선언
String[] words = {"apple", "orange", "banana", "grape"};
// 배열을 내림차순으로 정렬
Arrays.sort(words, Collections.reverseOrder());
// 결과 출력
System.out.println("내림차순으로 정렬된 배열: " + Arrays.toString(words));
}
}
출력:
내림차순으로 정렬된 배열: [orange, grape, banana, apple]
3. 커스텀 정렬
Comparator
인터페이스를 사용하면 배열을 사용자 정의 기준에 따라 정렬할 수 있습니다. 이를 통해 문자열의 길이, 특정 조건 등을 기준으로 정렬할 수
있습니다.
3.1 문자열을 길이에 따라 정렬하는 예제
import java.util.Arrays;
import java.util.Comparator;
public class Main {
public static void main(String[] args) {
// 문자열 배열 선언
String[] words = {"apple", "banana", "kiwi", "grapefruit"};
// 문자열 길이에 따라 정렬
Arrays.sort(words, Comparator.comparingInt(String::length));
// 결과 출력
System.out.println("문자열 길이에 따른 정렬: " + Arrays.toString(words));
}
}
설명:
Comparator.comparingInt()
: 특정 정수 값(여기서는 문자열의 길이)을 기준으로 정렬합니다.- *
String::length
*는 문자열의 길이를 반환하는 메서드 참조입니다.
출력:
문자열 길이에 따른 정렬: [kiwi, apple, banana, grapefruit]
3.2 문자열을 길이에 따라 내림차순으로 정렬
import java.util.Arrays;
import java.util.Comparator;
public class Main {
public static void main(String[] args) {
// 문자열 배열 선언
String[] words = {"apple", "banana", "kiwi", "grapefruit"};
// 문자열 길이에 따라 내림차순으로 정렬
Arrays.sort(words, Comparator.comparingInt(String::length).reversed());
// 결과 출력
System.out.println("문자열 길이에 따른 내림차순 정렬: " + Arrays.toString(words));
}
}
설명:
reversed()
메서드를 사용해 내림차순으로 정렬할 수 있습니다.
출력:
문자열 길이에 따른 내림차순 정렬: [grapefruit, banana, apple, kiwi]
4. Stream
API를 사용한 배열 정렬 (자바 8 이상)
자바 8 이상에서는 Stream
API를 사용하여 배열을 간결하고 선언적으로 정렬할 수 있습니다. Stream은 데이터 흐름을
처리하는 강력한 도구로, 배열뿐만 아니라 컬렉션의 정렬도 매우 쉽게 처리할 수 있습니다.
4.1 Stream
을 사용한 정렬 예제
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
// 정수 배열 선언
int[] numbers = {5, 2, 9, 1, 5, 6};
// Stream API를 사용하여 배열을 오름차순으로 정렬
int[] sortedNumbers = Arrays.stream(numbers).sorted().toArray();
// 결과 출력
System.out.println("Stream을 사용한 정렬된 배열: " + Arrays.toString(sortedNumbers));
}
}
설명:
Arrays.stream()
: 배열을 Stream으로 변환합니다.sorted()
: Stream의 요소를 정렬합니다.toArray()
: 정렬된 Stream을 배열로 변환합니다.
출력:
Stream을 사용한 정렬된 배열: [1, 2, 5, 5, 6, 9]
4.2 Stream
을 사용한 내림차순 정렬
import java.util.Arrays;
import java.util.Comparator;
public class Main {
public static void main(String[] args) {
// 정수 배열 선언 (객체 배열로 변환)
Integer[] numbers = {5, 2, 9, 1, 5, 6};
// Stream API를 사용하여 배열을 내림차순으로 정렬
Integer[] sortedNumbers = Arrays.stream(numbers)
.sorted(Comparator.reverseOrder())
.toArray(Integer[]::new);
// 결과 출력
System.out.println("Stream을 사용한 내림차순 정렬된 배열: " + Arrays.toString(sortedNumbers));
}
}
설명:
- *
Comparator.reverseOrder()
*를 사용해 내림차순으로 정렬합니다.
출력:
Stream을 사용한 내림차순 정렬된 배열: [9, 6, 5, 5, 2, 1]
요약
- *
Arrays.sort()
*는 기본적으로 오름차순으로 배열을 정렬합니다. - *
Collections.reverseOrder()
*를 사용해 배열을 내림차순으로 정렬할 수 있습니다. - *
Comparator
*를 사용하여 커스텀 정렬을 구현할 수 있습니다. - 자바 8 이상에서는
Stream
API를 사용해 선언적으로 배열을 정렬할 수 있습니다.
이러한 방법을 통해 자바에서 배열을 쉽게 정렬할 수 있으며, 상황에 맞게 다양한 정렬 방식을 선택할 수 있습니다.