오름차순 정렬 등 기본 제공하는 정렬 이외의 기준으로 정렬하고 싶은 경우 사용하는 인터페이스 이다. 주로 익명 클래스로 사용한다. 원하는 기준 정렬을 compare() 메서드를 재정의 함으로써 설정할 수 있다.

compare() 재정의 방법

만약, 첫번째 파라미터로 들어온 객체가 두번째 파라미터로 들어온 객체보다 값이 작을 경우 음수를 리턴 한다.

→ 정렬 시 앞으로 가야할 경우

만약, 첫번째 파라미터로 들어온 객체가 두번째 파라미터로 들어온 객체와 값이 같을 경우 0을 리턴 한다.

만약, 첫번째 파라미터로 들어온 객체가 두번째 파라미터로 들어온 객체보다 값이 클 경우 양수를 리턴 한다.

→ 정렬 시 뒤로 가야할 경우

단, 음수나 양수의 반환은 생략 가능하나 0은 반환하지 않으면 IllegalArgument(런타임 에러) 가 발생할 수 있다.

예시

https://www.acmicpc.net/problem/10814

아래 코드는 백준의 나이순 정렬 문제이다.

문제

온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 작성하시오.

입력

첫째 줄에 온라인 저지 회원의 수 N이 주어진다. (1 ≤ N ≤ 100,000)

둘째 줄부터 N개의 줄에는 각 회원의 나이와 이름이 공백으로 구분되어 주어진다. 나이는 1보다 크거나 같으며, 200보다 작거나 같은 정수이고, 이름은 알파벳 대소문자로 이루어져 있고, 길이가 100보다 작거나 같은 문자열이다. 입력은 가입한 순서로 주어진다.

출력

첫째 줄부터 총 N개의 줄에 걸쳐 온라인 저지 회원을 나이 순, 나이가 같으면 가입한 순으로 한 줄에 한 명씩 나이와 이름을 공백으로 구분해 출력한다.

예제 입력 1