내 LASTNAME을 나열합니다. 나는이 두 예제 (1, 2) 인 Java 8 comparable을 읽었습니다. 올바르게 구현 했습니까?정렬 내가 저자 클래스는 다음과 같이 작성해야
1
A
답변
0
나는 그것이 좋은 구현이라고 생각한다. 두 번째 방법은 다음과 같습니다
List<Author> list = new ArrayList<>();
Collections.sort(list, new Comparator<Author>() {
@Override
public int compare(Author a1, Author a2) {
return a1.getLastName().compareTo(a2.getLastName());
}
});
그리고 당신은이 목록을 정렬 할 경우 장소에 사용합니다.
@Update, 세 번째 옵션 :
public static class AuthorComparator implements Comparator<Author> {
@Override
public int compare(Author a1, Author a2) {
return a1.getLastName().compareTo(a2.getLastName());
}
}
당신은 당신의 저자 클래스에 넣고해야합니다. 그리고 정렬 할 곳 :
List<Author> list = new ArrayList<>();
Collections.sort(list, new Author.AuthorComparator());
을 일반적으로, 객체의'compareTo' 방법은 개체에 대한 정식 가장 일반적인 비교해야한다. 좀 더 구체적인 옵션은'Comparator.comparing (Author :: getLastname)'을 사용하는 것입니다. – 4castle
자바 8 비교기에 대해이 [post] (https://www.mkyong.com/java8/java-8-lambda-comparator-example/)를 참조한다고 가정 해보십시오. –
@ 4castle의 요점에 덧붙이면, 비교 가능한 클래스는 equals *와 일치하는 것이 좋습니다. 즉, a.compareTo (b) == 0은 항상 a.equals (b)와 같아야합니다. 나는 그것이 여기의 경우가 아니라고 생각한다. – shmosel