관리 메뉴

ballqs 님의 블로그

Array.sort와 Collections.sort의 차이점 본문

코딩 공부/Java

Array.sort와 Collections.sort의 차이점

ballqs 2024. 7. 15. 19:20

Javascript나 php에서는 간단하게 정렬기능이 있고 웹에 검색만해도 쉽게 나오는데 Java의 경우에는 여러개가 나오는 것과 동시에 어떤것은 에러가 나면서 동작안되는 경우가 생기곤 한다. 그래서 정리해보고자 한다.

 

1.Arrays.sort

Arrays.sort는 java.util.Arrays에 포함되어 있으며 import하여 사용 가능하다.

String ,int 등 배열을 정렬할때 사용한다.

 

오름차순

import java.util.Arrays;

class Solution {
	public void solution(){
    	int[] arr = {1, 2, 3, 1, 2, 3, 1};
        
        for(int i = 0; i < arr.length; i++){
            System.out.print(arr[i]);
        }
        // 결과 : 1, 2, 3, 1, 2, 3, 1
        
        // 오름차순 정렬
        Arrays.sort(arr);
        
        for(int i = 0; i < arr.length; i++){
            System.out.print(arr[i]);
        }
        // 결과 : 1, 1, 1, 2, 2, 3, 3
    }
}

오름차순은 만약 각종 Type들이 섞여 있을시 숫자 > 대문자 > 소문자 > 한글순 으로 정렬된다.

 

내림차순

import java.util.Arrays;

class Solution {
	public void solution(){
    	String[] arr = {"A", "A", "B", "C", "B", "B"};
        
        for(int i = 0; i < arr.length; i++){
            System.out.print(arr[i]);
        }
        // 결과 : A, A, B, C, B, B
        
        // 내림차순 정렬
        Arrays.sort(arr , Collections.reverseOrder());
        
        for(int i = 0; i < arr.length; i++){
            System.out.print(arr[i]);
        }
        // 결과 : C, B, B, B, A, A
    }
}

정렬되는 순서는 한글순 > 소문자 > 대문자 > 숫자로 정렬된다.

단 int 배열을 사용 했을 경우 아래와 같은 에러가 뜬다.


java: no suitable method found for sort(int[],java.util.Comparator<java.lang.Object>)
method java.util.Arrays.sort(T[],java.util.Comparator<? super T>) is not applicable
(inference variable T has incompatible bounds
equality constraints: int
lower bounds: java.lang.Object)
method java.util.Arrays.sort(T[],int,int,java.util.Comparator<? super T>) is not applicable
(cannot infer type-variable(s) T
(actual and formal argument lists differ in length))


대략 보면 int형은 호환하지 않는다는 내용이다.

따라서 intinteger로 바꾸면 해결 된다.

 

2.Collections.sort

Collections.sort는 java.util.Collections에 포함되어 있으며 import하여 사용 가능하다.

ArrayList를 정렬할때 사용한다.

 

오름차순

import java.util.ArrayList;
import java.util.Collections;

class Solution {
    public void solution() {
    	ArrayList<String> list = new ArrayList<String>();
        list.add("5");
        list.add("3");
        list.add("A");
        list.add("B");
        
        collections.sort(list);
        for(int i = 0; i < list.size(); i++){
        	System.out.println(list.get(i));
        }
        //결과 : 3, 5, A, B
    }
}

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

 

 

내림차순

import java.util.ArrayList;
import java.util.Collections;

class Solution {
    public void solution() {
    	ArrayList<String> list = new ArrayList<String>();
        list.add("5");
        list.add("3");
        list.add("A");
        list.add("B");
        
        collections.reverse(list);
        for(int i = 0; i < list.size(); i++){
        	System.out.println(list.get(i));
        }
        //결과 : B, A, 5, 3
    }
}

정렬되는 순서는 한글순 > 소문자 > 대문자 > 숫자로 정렬된다.