<aside> ✔️

참고 블로그

  1. Collections로 오름차순 내림차순 하기

  2. Collections와 Comparator로 오름 내림차순하기

  3. 다중 조건 정렬하기

  4. Collections와 Comparator의 기작 원리

</aside>

Collections는 자바 표준이라고 할수 있는 Java Collections Framework내의 자료구조들을 대상으로 Class내의 Static method를 구현해 놓은것이다. (주로 자료구조 내의 정렬, 복사, 출력 등에 많이 사용된다)

Sort 정렬

그 중에서도 sort정렬을 특히 많이 사용하게 되는데, HashMap이나 HashSet은 순서가 없기때문에 정렬할수가 없다. 대부분 동적배열인 ArrayList에 해당된다.

일단 어떻게 사용하는지부터 알아보도록 하자.

[오름차순 정렬]

List<Integer> intList = new ArrayList<Integer>(Arrays.asList(10, 0, 30, 20, 50, 40, 60, 10, 20 ,40 , 100, 30)) ;
	
//Integer WrapperClass가 있다고 할때, Collections의 static method로 sort가 제공된
Collections.sort(intList);

//Java8 이후에는 다음과 같이 ArrayList자체의 메소드가 제공된다.
//여기서는 Collections가 제공하는 static method를 상요하는 것이 아니라 자료구조 클래스 안에 구현되어 있는 메소드를 이용하는 것.
intList.sort(Comparator.naturalOrder()); //인자로 Comparator를 넘겨줘야 한다.

/* 출력 결과
[10, 0, 30, 20, 50, 40, 60, 10, 20, 40, 100, 30]
[0, 10, 10, 20, 20, 30, 30, 40, 40, 50, 60, 100]
*/

[내림차순 정렬]

//내림차순 정렬
Collections.sort(intList, Collections.reverseOrder());

//Java8 이후에는 다음과 같이 ArrayList자체의 메소드가 제공된다.
intList.sort(Comparator.reverseOrder()); //인자로 Comparator를 넘겨줘야 한다.

/*
[100, 60, 50, 40, 40, 30, 30, 20, 20, 10, 10, 0]
*/

Collections의 static sort method를 사용할지 아니면 자료구조 클래스 안에 구현된 sort 메소드를 사용할지는 사용자 마음이다. Collections.sort(정렬할 대상의 List, Comparator<T>); 형식을 갖는다. Collections.reverseOrder() ← Comparator임 (정확한 원리는 더 아래에서 알아보도록 하자)