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

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

Nov 18, 2023 am 11:36 AM
종류사용자 정의 비교기arrayssort() 방법

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 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    성명
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

    핫 AI 도구

    Undresser.AI Undress

    Undresser.AI Undress

    사실적인 누드 사진을 만들기 위한 AI 기반 앱

    AI Clothes Remover

    AI Clothes Remover

    사진에서 옷을 제거하는 온라인 AI 도구입니다.

    Undress AI Tool

    Undress AI Tool

    무료로 이미지를 벗다

    Clothoff.io

    Clothoff.io

    AI 옷 제거제

    AI Hentai Generator

    AI Hentai Generator

    AI Hentai를 무료로 생성하십시오.

    뜨거운 도구

    MinGW - Windows용 미니멀리스트 GNU

    MinGW - Windows용 미니멀리스트 GNU

    이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

    메모장++7.3.1

    메모장++7.3.1

    사용하기 쉬운 무료 코드 편집기

    WebStorm Mac 버전

    WebStorm Mac 버전

    유용한 JavaScript 개발 도구

    Dreamweaver Mac版

    Dreamweaver Mac版

    시각적 웹 개발 도구

    SublimeText3 Mac 버전

    SublimeText3 Mac 버전

    신 수준의 코드 편집 소프트웨어(SublimeText3)