> Java > java지도 시간 > 본문

Java의 Arrays.sort() 메소드는 사용자 정의 비교기로 배열을 어떻게 정렬합니까?

王林
풀어 주다: 2023-11-18 11:36:57
원래의
971명이 탐색했습니다.

Java의 Arrays.sort() 메소드는 사용자 정의 비교기로 배열을 어떻게 정렬합니까?

Java의 Arrays.sort() 메서드는 사용자 정의 비교기에 따라 배열을 어떻게 정렬합니까?

Java에서 Arrays.sort() 메서드는 배열을 정렬하는 데 매우 유용한 메서드입니다. 기본적으로 이 방법은 오름차순으로 정렬됩니다. 그러나 때로는 우리가 정의한 규칙에 따라 배열을 정렬해야 하는 경우도 있습니다. 이때 사용자 정의 비교기(Comparator)를 사용해야 합니다.

사용자 정의 비교기는 특정 요구에 따라 비교 규칙을 정의할 수 있는 Comparator 인터페이스를 구현하는 클래스입니다. 사용자 정의 비교기는 기본 유형과 사용자 정의 유형을 포함하여 모든 유형의 개체를 정렬할 수 있습니다.

다음으로 사용자 정의 비교기를 사용하여 Java에서 Arrays.sort() 메서드를 정렬하는 방법을 소개하고 설명할 샘플 코드를 제공하겠습니다.

  1. 사용자 정의 비교기를 정의하는 방법은 무엇입니까?

사용자 정의 비교기를 정의하려면 Comparator 인터페이스를 구현하고 비교 메서드를 재정의하기만 하면 됩니다. 비교 메서드에는 두 개의 매개변수가 있습니다. 비교 규칙에는 다음과 같은 상황이 있습니다.

    obj1 == obj2, 0을 반환합니다. obj1 > obj2, 양의 정수를 반환합니다.
  • 키 코드는 다음과 같습니다.
  • public class MyComparator implements Comparator<T> {
        @Override
        public int compare(T o1, T o2) {
            // 你的自定义比较规则
            return 0;
        } 
    }
    로그인 후 복사
  • 배열을 정렬하기 위해 사용자 정의 비교기를 사용하는 방법은 무엇입니까?

Arrays.sort() 메서드에는 여러 오버로드된 버전이 있으며 그 중 하나는 사용자 정의 비교기를 허용합니다. 우리가 정의한 비교기를 이 메소드의 두 번째 매개변수로 사용할 수 있으므로 우리가 만든 규칙에 따라 배열을 정렬할 수 있습니다.
  1. 키 코드는 다음과 같습니다.
  2. public static <T> void sort(T[] a, Comparator<? super T> c) 
    로그인 후 복사
그 중 T[] a는 정렬할 배열을 나타내고, Comparator< super T> c는 비교기를 나타냅니다.

샘플 코드

이제 구체적인 예를 살펴보겠습니다. 이 클래스에는 이름과 나이라는 두 개의 멤버 변수가 포함되어 있습니다. 이제 Student 배열을 가장 작은 연령부터 가장 큰 연령 순으로 정렬하려면 사용자 지정 비교기를 정의해야 합니다. 샘플 코드는 다음과 같습니다.
    public class StudentComparator implements Comparator<Student> {
        @Override
        public int compare(Student o1, Student o2) {
            return o1.age - o2.age;
        } 
    }
    로그인 후 복사
  1. 위 코드에서는 Comparator 인터페이스를 구현하고 비교 메서드를 재정의하는 StudentComparator 클래스를 정의합니다. 비교 방법에서는 연령에 대한 비교에 중점을 둡니다. o1의 나이가 o2의 나이보다 작으면 음의 정수가 반환됩니다. o1의 나이가 o2의 나이와 같으면 0이 반환됩니다. o1의 나이가 o2의 나이보다 크면 양의 정수가 반환됩니다.
다음으로 Arrays.sort() 메서드를 사용하여 정의한 규칙에 따라 Student 배열을 정렬할 수 있습니다.

public class Main {
    public static void main(String[] args) {
        Student[] students = new Student[3];
        students[0] = new Student("Tom", 20);
        students[1] = new Student("Jack", 18);
        students[2] = new Student("Lucy", 22);
        
        Arrays.sort(students, new StudentComparator());
        
        for (Student student : students) {
            System.out.println(student.name + " " + student.age);
        }
    }
}
로그인 후 복사

출력 결과는 다음과 같습니다.

Jack 18
Tom 20
Lucy 22
로그인 후 복사
결과에서 볼 수 있듯이 우리가 정의한 규칙에 따라 Student 배열은 연령별로 작은 것부터 큰 것까지 정렬됩니다.

Summary

Arrays.sort() 메서드는 모든 유형의 배열을 정렬할 수 있는 매우 유용한 메서드입니다. 자신이 정의한 규칙에 따라 배열을 정렬해야 하는 경우 Comparator 인터페이스를 구현하고 비교 메서드를 재정의하기만 하면 됩니다. 구체적인 구현 과정은 위에서 언급한 바와 같으며, 모든 분들께 도움이 되기를 바랍니다.

    위 내용은 Java의 Arrays.sort() 메소드는 사용자 정의 비교기로 배열을 어떻게 정렬합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    원천:php.cn
    본 웹사이트의 성명
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
    인기 튜토리얼
    더>
    최신 다운로드
    더>
    웹 효과
    웹사이트 소스 코드
    웹사이트 자료
    프론트엔드 템플릿