2019년 11월 11일 월요일

Java 정렬, Collections.sort()

Java에서 정렬은 java.util.Collections의 static 메서드 sort()를 이용하는 것이 가장 편리하다.
아래의 두가지 sort() 메서드가 제공된다.

  • static <T extends Comparable<? super T>> void sort(List<T> list)
  • static <T> void sort(List<T> list, Comparator<? super T> c)

첫 번째 메서드는 정렬의 대상이 Comparable 인터페이스를 구현하고 있어야 한다. (참고: Java 제네릭에서는 매개변수화된 타입에 제약조건을 줄 때 extends와 implements를 퉁쳐서 extends 하나의 키워드를 쓴다.) Comparable 인터페이스를 구현하는 것은 어렵지 않은데 int 값을 반환하는 compareTo 메서드 하나만 구현하면 된다.

두 번째 메서드는 Comparator 인터페이스를 구현하고, 이를 인자로 넣어주는 방식이다. 사용자 타입이라든가 기본적으로 Comparable을 구현하고 있는 String과 같은 타입에 대해 다른 방식의 정렬 기준을 지정하고 싶을 때 쓰면 된다. Comparable과 유사하게 int 값을 반환하는 compare 메서드를 구현해야 한다.

반환 값은 C언어의 정렬 방식과 같이 두 비교 객체가 같으면 0, this가 인자보다 크면 1(양의 정수), this가 인자보다 작으면 -1(음의 정수)를 지정해주면 된다.

댓글 없음:

댓글 쓰기