[Java] Comparable, Comparator
ComparableとComparatorとは?
ComparentとComparatorはソートに使用されます.
しかし、両者の使い方には少し違いがあります.
-Javaが提供するすべてのソート可能クラスは、Comparetインタフェースを実装し、ソート時に対応するソートを行います.
-デフォルトでは昇順ソートが実行されます.
-基本的なソート方法は、昇順ソートと降順ソートです.
使用例
package sort;
public class Employee implements Comparable<Employee>{
int eno;
String name;
String job;
String boss;
Employee(int eno, String name, String job, String boss){
this.eno = eno;
this.name = name;
this.job = job;
this.boss = boss;
}
@Override
public int compareTo(Employee o) {
// String을 compare 할 때
return this.name.compareTo(o.name);
// int를 compare 할 때
// return this.eno - o.eno;
}
...
}
package sort;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
public class Main {
public static void main(String[] args) {
Employee emp1 = new Employee(1, "Seo", "디자인", "보스1", 2800);
Employee emp2 = new Employee(2, "Kim", "마케팅", "보스2", 3000);
Employee emp3 = new Employee(3, "Yong", "인사", "보스3", 2500);
Employee emp4 = new Employee(4, "Hong", "개발", "보스4", 4000);
Employee emp5 = new Employee(5, "Park", "회계", "보스5", 3500);
ArrayList<Employee> list = new ArrayList<Employee>();
list.add(emp1);
list.add(emp2);
list.add(emp3);
list.add(emp4);
list.add(emp5);
// 기존 입력 순서로 출력
System.out.println("입력 순서: \n" + list);
// Override로 정해놓은 이름 순서로 정렬
Collections.sort(list);
// 정렬 뒤 순서로 출력
System.out.println("Comparable 순서: \n" + list);
// 익명클래스로 Comparator 구현
Comparator<Employee> salaryCompare = new Comparator<Employee>() {
@Override
public int compare(Employee o1, Employee o2) {
return o2.salary - o1.salary;
}
};
// Comparator 정렬
Collections.sort(list, salaryCompare);
// 정렬 뒤 순서로 출력
System.out.println("Comparator 순서: \n" + list);
}
}
出力画面
References
https://m.blog.naver.com/PostView.nhn?blogId=occidere&logNo=220918234464&proxyReferer=https:%2F%2Fwww.google.co.kr%2F
Reference
この問題について([Java] Comparable, Comparator), 我々は、より多くの情報をここで見つけました https://velog.io/@seobob/Java-Comparable-Comparatorテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol