SeouliteLab

[Java/자바] 배열 정렬(Sorting) (오름차순, 내림차순) 본문

프로그래밍

[Java/자바] 배열 정렬(Sorting) (오름차순, 내림차순)

Seoulite Lab 2024. 3. 6. 13:12

자바에서 배열을 정렬하는 것은 매우 일반적인 작업입니다. 배열을 오름차순으로 정렬하거나 내림차순으로 정렬하는 방법에 대해 알아보겠습니다. 각각의 방법에 대해 예제를 통해 자세히 살펴보겠습니다.

예제 1: Arrays.sort() 메서드를 이용한 오름차순 정렬

int[] arr = {3, 1, 5, 2, 4};
Arrays.sort(arr); // 오름차순 정렬
System.out.println(Arrays.toString(arr));  // 출력 결과: [1, 2, 3, 4, 5]

Arrays.sort() 메서드를 사용하여 배열을 오름차순으로 정렬할 수 있습니다. 이 메서드는 배열을 직접 변경하며 반환값은 void입니다.

예제 2: Comparator.reverseOrder()를 이용한 내림차순 정렬

Integer[] arr = {3, 1, 5, 2, 4};
Arrays.sort(arr, Comparator.reverseOrder()); // 내림차순 정렬
System.out.println(Arrays.toString(arr));  // 출력 결과: [5, 4, 3, 2, 1]

Comparator.reverseOrder()를 사용하여 배열을 내림차순으로 정렬할 수 있습니다. 이 메서드는 Comparator 인터페이스를 구현한 객체를 반환하며, Comparator.reverseOrder()는 내림차순으로 비교하는 Comparator를 생성합니다.

예제 3: Collections.sort() 메서드를 이용한 내림차순 정렬

List<Integer> list = new ArrayList<>(Arrays.asList(3, 1, 5, 2, 4));
Collections.sort(list, Comparator.reverseOrder()); // 내림차순 정렬
System.out.println(list);  // 출력 결과: [5, 4, 3, 2, 1]

Collections.sort() 메서드를 사용하여 List를 정렬할 수도 있습니다. 이때 Comparator.reverseOrder()를 사용하여 내림차순으로 정렬합니다.

예제 4: 배열을 Stream을 이용하여 내림차순 정렬

Integer[] arr = {3, 1, 5, 2, 4};
Arrays.stream(arr)
      .sorted(Comparator.reverseOrder())
      .forEach(System.out::println);  // 출력 결과: 5 4 3 2 1

Stream API를 사용하여 배열을 내림차순으로 정렬할 수도 있습니다. sorted() 메서드에 Comparator.reverseOrder()를 전달하여 내림차순으로 정렬합니다.

예제 5: Comparator를 이용하여 사용자 정의 객체 배열 정렬

class Student {
    String name;
    int score;

    public Student(String name, int score) {
        this.name = name;
        this.score = score;
    }
}

Student[] students = {
    new Student("Alice", 90),
    new Student("Bob", 85),
    new Student("Charlie", 95)
};

Arrays.sort(students, Comparator.comparingInt((Student s) -> s.score).reversed());
for (Student student : students) {
    System.out.println(student.name + ": " + student.score);
}

Comparator를 사용하여 사용자 정의 객체를 정렬할 수 있습니다. 이 예제에서는 학생 객체를 점수(score)에 따라 내림차순으로 정렬합니다.