<aside> ✔️
참고 블로그
</aside>
Collections는 자바 표준이라고 할수 있는 Java Collections Framework내의 자료구조들을 대상으로 Class내의 Static method를 구현해 놓은것이다. (주로 자료구조 내의 정렬, 복사, 출력 등에 많이 사용된다)
그 중에서도 sort정렬을 특히 많이 사용하게 되는데, HashMap이나 HashSet은 순서가 없기때문에 정렬할수가 없다. 대부분 동적배열인 ArrayList에 해당된다.
일단 어떻게 사용하는지부터 알아보도록 하자.
Case1.
단순, Primitive Variable에 대한 Wrapper Class일때, String, Integer, Double, Float, Byte 등 (Reference Type)에 해당된다.
[오름차순 정렬]
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임 (정확한 원리는 더 아래에서 알아보도록 하자)