때문에 Date
구현 Comparable
, 그것은이 compareTo
처럼 방법을 String
수행합니다.
따라서 사용자 정의 Comparator
는 다음과 같이 보일 수 있습니다.
public class CustomComparator implements Comparator<MyObject> {
@Override
public int compare(MyObject o1, MyObject o2) {
return o1.getStartDate().compareTo(o2.getStartDate());
}
}
이 compare()
메소드는을 리턴해야 int
하므로 boolean
계획했던 것처럼 직접 리턴 할 수 없습니다 .
정렬 코드는 다음과 같이 작성됩니다.
Collections.sort(Database.arrayList, new CustomComparator());
비교기를 재사용 할 필요가없는 경우이 모든 것을 작성하는 약간 더 짧은 방법은 인라인 익명 클래스로 작성하는 것입니다.
Collections.sort(Database.arrayList, new Comparator<MyObject>() {
@Override
public int compare(MyObject o1, MyObject o2) {
return o1.getStartDate().compareTo(o2.getStartDate());
}
});
이제 람다 식 을 사용하여 마지막 예제를 더 짧은 형식으로 작성할 수 있습니다 Comparator
.
Collections.sort(Database.arrayList,
(o1, o2) -> o1.getStartDate().compareTo(o2.getStartDate()));
그리고 List
가 sort(Comparator)
당신이 더욱이를 단축 할 수 있도록 방법 :
Database.arrayList.sort((o1, o2) -> o1.getStartDate().compareTo(o2.getStartDate()));
이것은 키가 있는 클래스 를 생성하는 내장 메소드 가있는 일반적인 관용구입니다 .Comparator
Comparable
Database.arrayList.sort(Comparator.comparing(MyObject::getStartDate));
이들은 모두 동등한 형태입니다.