예제
import java.util.Arrays;
import java.util.Collections;
public class Algorithm {
public static void main(String[] args) {
//[1] : 배열 선언 -> 성적 배열
//이때, 내림차순이거나 또는 원하는대로 정렬의 조건을 설정해서 하고자 할때 -> 기본형(PrimitiveType)의 배열에는 적용이안된다.
//따라서, 래퍼 클래스로 만들어서 적용해야한다.
Integer[] scores = {88, 55, 39, 100, 90, 100, 98, 67};
//[2] : 성적 배열 -> 내림차순 정렬 -> Arrays.sort(); -> import필요 -> 추가 옵션 설정필요 -> (배열명, 컬렉션 reverseOrder)
//Collections 클래스의 reverseOrder() 메서드 사용-> import 필요
System.out.print("화장실(정렬) 들어가기 전 = ");
for(int i = 0; i < scores.length; i++) {
System.out.print(scores[i] + " ");
}
System.out.println();
//내림차순 정렬
Arrays.sort(scores, Collections.reverseOrder());
System.out.print("화장실(정렬) 들어가기 후 = ");
for(int i = 0; i < scores.length; i++) {
System.out.print(scores[i] + " ");
}
System.out.println();
//[3] : 향상된 for문
System.out.println("\n--- 향상된 for문 ---");
System.out.print("화장실(정렬) 들어가기 후 = ");
for(int i : scores) {
System.out.print(i + " ");
}
}
}
화장실(정렬) 들어가기 전 = 88 55 39 100 90 100 98 67
화장실(정렬) 들어가기 후 = 100 100 98 90 88 67 55 39
--- 향상된 for문 ---
화장실(정렬) 들어가기 후 = 100 100 98 90 88 67 55 39
Java에서는 primitive 타입의 배열에 대한 내림차순 정렬을 직접적으로 제공하지 않는다. 따라서 배열을 Integer 객체로 뱐환한 후에 Comparator를 사용하여 내림차순 정렬을 수행해야한다.
1. 배열 선언과 초기화
- 먼저, 성적을 나타내는 "Integer" 타입의 배열을 선언하고 초기값을 할당한다. 기본형(primitive type)의 배열에는 내림차순 또는 원하는 정렬 조건을 적용할 수 없으므로, "Integer" 클래스의 래퍼 클래스로 만들어서 사용한다.
- 예제에서는 "Integer[] scores = {88, 55, 39, 100, 90, 100, 98, 67};" 와 같이 성적 배열 "scores"를 선언하고 초긱밧을 할당하였다.
2. Arrays 클래스를 이용한 내림차순 정렬
- "Arrays.sort()" 메서드를 사용하여 배열을 내림차순으로 정렬한다. 내림차순 정렬을 위해 사용자 정의 "Comparator" 객체를 생성하여 "Arrays.sort()" 메서드에 전달한다.
- 예제에서 "Arrays.sort(scores, Collections.reverseOrder());" 와 같이 "scores" 배열을 내림차순으로 정렬한다.
추가 심화내용
- Arrays.sort() 메서드와 Collections.reverseOrder() 를 함께 사용하여 배열을 내림차순으로 정렬할 수 있다. "Collections.reverseOrder()"는 "Comparator" 인터페이스를 구현하는 객체로, 역순으로 비교할 수 있도록 해준다.
- 배열을 정렬하는 방법으로 "Arrays.sort()" 외에 "Arrays.parallelSort()" 메서드를 사용할 수도 있다. "Arrays.parallelSort()" 는 배열을 병렬로 처리하여 더 빠르게 정렬하는 메서드이다. 배열의 크기가 큰 경우에는 특히 성능상의 이점을 가져올 수 있다.
주의점
- 배열을 내림차순으로 정렬하기 위해서는 Arrays.sort() 메서드의 두 번쨰 인자로 "Comparator" 객체를 전달해야 합니다. "Collections.reverseOrder()" 는 컬렉션에 사용되는 "Comparator" 이므로 배열에 직접 사용할 수 없다. 따라서 "Integer[]" 와 같이 래퍼 클래스 배열을 사용하여 정렬해야 한다.
- "Arrays.sort(), Arrays.parallelSort()" 는 배열의 원본을 직접 정렬하여 변경한다. 이는 원본 배열에 영향을 주므로 주의해야 한다. 만약 원본 배열을 보존하고 정렬된 배열을 따로 사용하고자 한다면, 원본 배열을 복사하여 정렬 후 사용하는것이 좋다.
'Java > JAVA 100 문제 풀이' 카테고리의 다른 글
자바 part.5 문제풀이 - 자바 알고리즘: 배열 내 숫자 빈도 수 계산하기 (0) | 2023.07.29 |
---|---|
자바 part.4 문제풀이 - 성적 랭킹 구하기: 배열과 정렬 알고리즘 (0) | 2023.07.28 |
자바 part.4 문제풀이 - 성적 오름차순 정렬하기: Arrays.sort() 메서드 활용 (0) | 2023.07.28 |
자바 part.4 문제풀이 - 랜덤 정수 배열에서 최소값과 최대값 구하기 (0) | 2023.07.28 |
자바 part.4 문제풀이 - 정수 배열에서 최소, 최댓값 찾기 (0) | 2023.07.28 |