백엔드/Java

[Java] 배열 정렬(Arrays)

  • 예제 arrayint[] array = {3, 17, 1, 39, 8, 41, 2, 32, 99, 2}; 을 받은 값

1. 오름차순 정렬

  • 사용 메소드 : public static void sort(Object[] a)
  • Arrays.sort(array) 사용 (default 오름차순)
    • 파라미터는 primitive type (int, byte, float..), Object(객체 포함)
예제
public static void main(String[] args) {
    int[] array = {3, 17, 1, 39, 8, 41, 2, 32, 99, 2};
    Arrays.sort(array);

    for(int result: array){
        System.out.print(result + "  ");
    }
}

//결과
//1  2  2  3  8  17  32  39  41  99

2. 내림차순 정렬

  • 사용 메소드: public static <T> void sort(T[] a, Comparator<? super T> c)
  • 내림차순에 파라미터 primitive type(int)을 사용 못함, reference type(Integer) 사용
  • Arrays.sort(array, Collections.reverseOrder())
  • Arrays.sort(array, Comparator.reverseOrder())
  • Arrays.sort(array, Comparator 직접 구현)
    • 아래의 예제는 new와 람다식을 통해 2가지 방법으로 구현
    • o2.compareTo(o1) : 내림차순
    • o1.compareTo(o2) : 오름차순
예제
Integer[] array = {3, 17, 1, 39, 8, 41, 2, 32, 99, 2};

//첫번째 방법 Collections.reverseOrder()
Arrays.sort(array, Collections.reverseOrder()); 

//두번째 방법 Comparator.reverseOrder()
Arrays.sort(array, Comparator.reverseOrder());

//세번째 방법 Comparator 직접 구현 (compare 메소드 구현)
Arrays.sort(array, new Comparator<Integer>() { 
    @Override
    public int compare(Integer o1, Integer o2) {
       return o2.compareTo(o1);
    }
});

Arrays.sort(array, (o1, o2) -> o2.compareTo(o2)); //람다식 사용