Java

[Java] 최소값과 최대값을 구하게 해주는 Arrays.sort() 메소드

Rachel_ 2022. 1. 1. 23:08

Arrays.sort()

 

배열이나 리스트를 정렬할 때, 별도의 정렬 로직을 짜지 않아도 이 메소드를 이용함으로써 간편하게 배열이나 리스트 정렬이 가능해진다.

 

1. 정수값의 오름차순 정렬

import java.util.Arrays;

public class CHAPTER09SORT {
    public static void main(String[] args) {
        
        int[] arr1 = {1, 5, 77, 2, 555, 324};
        Arrays.sort(arr1);
        
        for ( int i : arr1) {
            System.out.println("[" + i + "]");
        }
    }
}

출력값 :

[1]
[2]
[5]
[77]
[324]
[555]

2. 문자형의 오른차순 정렬

import java.util.Arrays;

public class CHAPTER09SORT {
    public static void main(String[] args) {
        
        String[] arr2 = {"Apple", "Tomato", "Melon", "Banana"};
        Arrays.sort(arr2);
        
        for (String j : arr2){
            System.out.println("["+j+"]");
        }
    }
}

출력값 :

[Apple]
[Banana]
[Melon]
[Tomato]

3. 내림차순 정렬(정수형, 문자형 모두 형식은 동일)

package com.java.Study;

import java.util.Arrays;
import java.util.Collections;

public class CHAPTER09SORT {
    public static void main(String[] args) {

        String[] arr3 = {"Apple", "Tomato", "Melon", "Banana"};
        
        // 내림차순을 활용할 때에는 Collections.reverseOrder() 를 활용한다.
        Arrays.sort(arr3, Collections.reverseOrder());

        for(String S : arr3){
            System.out.println("["+S+"]");
        }
    }
}

출력값 :

[Tomato]
[Melon]
[Banana]
[Apple]

4. 배열의 일부 내용만을 정렬

import java.util.Arrays;
import java.util.Collections;

public class CHAPTER09SORT {
    public static void main(String[] args) {
        int[] arr1 = {1, 77, 5, 2, 555, 324};
        
        Arrays.sort(arr1, 0, 3); // [0]부터 3번째까지, 즉 0, 1, 2만 정렬을 한다는 의미이다.
        
        for ( int i : arr1) {
            System.out.println("[" + i + "]");
        }
    }
}

[1]
[5]
[77] // 까지가 정렬이 된 후, 다음 배열은 그대로 출력되었음을 알 수 있다.
[2]
[555]
[324]

 

5. 객체 배열의 정렬

객체로 이루어진 배열의 경우에는 객체 클래스가 Comparable 인터페이스의 compareTo() 메서드를 구현하고 있어야 정렬이 됩니다. 예제는 나이별로 사람들을 정리하는 예제입니다.

import java.util.Arrays;

class People implements Comparable {

    private String name;
    private int age;
    
    public People(String name, int age){
        this.name = name;
        this.age= age;
    }

    public String print(){
        return name+"("+age+")";
    }

    @Override
    public int compareTo(People people) {
         // TODO Auto-generated method stub
         if (this.age < people.age) {
             return -1;
         } else if (this.age == people.age) {
             return 0;
         } else {
             return 1;
         }
     }
}

public class Sort{
     public static void main(String[] args)  {
         People[] arr = { new People("상현", 20)
            , new People("철수", 14)
            , new People("경완", 31)
            , new People("대호", 40)
            , new People("지운", 24) 
        };
		
        Arrays.sort(arr); //오름차순 정렬
		
        for (People i : arr) { //오름차순 출력
            System.out.print("["+i.print()+"]");
        }
		
        Arrays.sort(arr,Collections.reverseOrder()); //내림차순 정렬
        System.out.println();
		
        for (People i : arr) { //내림차순 출력
            System.out.print("["+i.print()+"]");
        }
    }
}