[JAVA/자료구조] Comparable과 Comparator 차이 HEESOO 03 Sep 2020 on Java Comparable과 Comparator 차이 1. Comparable 오름차순, 가나다 등 기본 정렬 기준을 따르는데, 새 클레스에서 정렬할 기준(변수)을 잡아줄 때 사용 기존 Integer, String 등의 compareTo()를 이용하는게 보통 compareTo()를 오버라이드해서 사용, 파라미터는 하나 나 자신과 파라미터를 비교 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 import java.util.HashMap; /** * * @author HEESOO * */ class Music implements Comparable<Music>{ String name; int idx; int times; ... @Override public int compareTo(Music o1){ return name.compareTo(o1.name); // name을 기준으로 사전순 정렬 } } 2. Comparator 내림차순, 사전 역순 등 기존 정렬 기준이 아닌 새로운 것을 짤 때 사용 compare()을 오버라이드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 import java.util.HashMap; /** * * @author HEESOO * */ class Main{ ... Arrays.sort(array, new Comparator<Music>(){ @Override public int compare(Music m1, Music m2){ // name 기준 사전 역순으로 정렬 if(m1.name<m2.name) return 1; else if(m1.name==m2.name) return 0; else return -1; } }) }