자바(JAVA)

자바(Java) 객체 배열 정렬하기

녹두장군1 2024. 2. 28. 22:51
반응형

객체 배열 정렬”은 사용자가 정의한 클래스의 객체로 이루어진 배열의 요소들을 기준에 따라 오름차순이나 내림차순으로 정렬하는 작업을 말합니다. 정렬 기준은 주로 객체의 특정 속성이나 비교 메서드를 통해 결정됩니다.

 


  

구문

 

// Arrays 클래스의 sort 메서드를 사용한 오름차순 정렬
Arrays.sort(array);
 
// Arrays 클래스의 sort 메서드를 사용한 내림차순 정렬
Arrays.sort(array, Comparator.reverseOrder());

 

 

예제 1: 객체 배열 오름차순 정렬

 

이 예제에서는 “Comparable” 인터페이스를 구현하여 나이를 기준으로 오름차순 정렬한 “Person” 클래스를 정의했습니다. “Arrays.sort()” 메서드를 사용하여 객체 배열을 정렬하고, 결과를 출력했습니다.

 

import java.util.Arrays;
 
public class Person implements Comparable<Person> {
    private String name;
    private int age;
 
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
 
    // 나이를 기준으로 오름차순 정렬
    @Override
    public int compareTo(Person other) {
        return Integer.compare(this.age, other.age);
    }
 
    public String toString() {
        return name + " (" + age + " years old)";
    }
 
    public static void main(String[] args) {
        // 객체 배열 선언 및 초기화
        Person[] people = {
            new Person("Alice", 25),
            new Person("Bob", 30),
            new Person("Charlie", 22),
            new Person("David", 28)
        };
 
        // 오름차순 정렬
        Arrays.sort(people);
 
        // 결과 출력
        System.out.println("나이로 오름차순 정렬 결과:");
        for (Person person : people) {
            System.out.println(person);
        }
    }
}
 
[출력]
나이로 오름차순 정렬 결과:
Charlie (22 years old)
Alice (25 years old)
David (28 years old)
Bob (30 years old)

 

 

예제 2: 객체 배열 내림차순 정렬

 

이 예제에서는 “Comparable” 인터페이스를 구현하여 나이를 기준으로 오름차순 정렬한 “Person” 클래스를 정의했습니다. “Arrays.sort()” 메서드를 사용하여 객체 배열을 내림차순으로 정렬하고, 결과를 출력했습니다.

 

import java.util.Arrays;
import java.util.Comparator;
 
public class Person implements Comparable<Person> {
    private String name;
    private int age;
 
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
 
    // 나이를 기준으로 오름차순 정렬
    @Override
    public int compareTo(Person other) {
        return Integer.compare(this.age, other.age);
    }
 
    public String toString() {
        return name + " (" + age + " years old)";
    }
 
    public static void main(String[] args) {
        // 객체 배열 선언 및 초기화
        Person[] people = {
            new Person("Alice", 25),
            new Person("Bob", 30),
            new Person("Charlie", 22),
            new Person("David", 28)
        };
 
        // 내림차순 정렬
        Arrays.sort(people, Comparator.reverseOrder());
 
        // 결과 출력
        System.out.println("나이로 내림차순 정렬 결과:");
        
        for (Person person : people) {
            System.out.println(person);
        }
    }
}
 
[출력]
나이로 내림차순 정렬 결과:
Bob (30 years old)
David (28 years old)
Alice (25 years old)
Charlie (22 years old)

 

반응형