프로그래밍 공부/JAVA

[JAVA] 정렬(Sorting)

valid_ming 2021. 3. 8. 20:12

 

Arrays.sort

자바에서 제공해주는 sort 메서드를 이용하여 쉽게 배열을 정렬할 수 있다.

 

오름차순 정렬(default): Arrays.sort()

import java.util.Arrays //정렬 메서드를 사용하기 위해 포함한다.

public class Main{
	public static void main(String[] args){
    	int[] intArray = {5,1,3,2,4};
        String[] stringArray = {"banana", "apple", "peach"};
        
        Arrays.sort(intArray);	//결과: 1,2,3,4,5
        Arrays.sort(stringArray);//결과: "apple", "banana", "peach"
    }
}

숫자와 문자와 같이 복합적으로 나타나는 배열을 정렬하게 되면

숫자 > 대문자 > 소문자 > 한글 순으로 정렬이 된다.

 

내림차순 정렬 : Arrays.sort(arr, Collections.reverseOrder())

 

import java.util.Arrays //정렬 메서드를 사용하기 위해 포함한다.
import java.util.Collections //collection 매서드를 사용하기 위해 포함

public class Main{
	public static void main(String[] args){
    	int[] intArray = {5,1,3,2,4};
        String[] stringArray = {"banana", "apple", "peach"};
        
        Arrays.sort(intArray, Collections.reverseOrder());	//결과: 5,4,3,2,1
        Arrays.sort(stringArray, Collections.reverseOrder());//결과:"peach","banana","apple"
    }
}

 

Collections.sort

자바 collection을 이용한 배열들은 collection.sort를 이용하여 쉽게 정렬할 수 있다.

 

오름차순 정렬(default): Collections.sort()

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

public class Main{
	public static void main(String[] args){
    	ArrayList<Integer> list = new ArrayList<Integer>();
        list.add(1);
        list.add(5);
        list.add(4);
        list.add(2);
        list.add(3);
        
        Collections.sort(list); //결과: 1,2,3,4,5
    }
}

한글 > 소문자 > 대문자 > 숫자 순으로 정렬된다.

 

내림차순 정렬: Collections.reverse()

 

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

public class Main{
	public static void main(String[] args){
    	ArrayList<Integer> list = new ArrayList<Integer>();
        list.add(1);
        list.add(5);
        list.add(4);
        list.add(2);
        list.add(3);
        
        Collections.reverse(list); //결과: 5,4,3,2,1
    }
}

 

객체 정렬

Comparable 인터페이스를 이용하여 다양한 element가 존재하는 클래스도 정렬 가능하다.

import java.util.Collections;

public class Main{
	public static class Student implements Comparable<Student>{
		int num;
    	String name;
    
   	 	@Override
   	 	public int compareTo(Student o){
    		return this.num-o.num; //오름차순 정렬
    	}
	}
    
    public static void main(String[] args){
    	ArrayList<Student> s= new ArrayList<Student>();
        
        Collections.sort(s);
    }
}