Из всех примеров методов сортировки, которые я видел, я никогда не сталкивался с примером, где они передают определение Comparator. Если компаратор предназначен для возврата отрицательного, положительного или 0 для сортировки объектов, что делает метод сортировки с этой информацией? Как метод sort получает значимую информацию из определения Comparator и выполняет свою операцию?
Вот такой метод сортировки:
public void sort() {
library.sort(new BookComparator());
}
Вот весь класс Comparator:
import java.util.Comparator;
public class BookComparator implements Comparator<Book> {
public int compare(Book a, Book b) {
if(a == null || b == null) {
throw new NullPointerException();
}
int result = 0 ;
if(a.getAuthor() == null) {
if(b.getAuthor() != null) {
result = -1;
}
} else if(b.getAuthor() == null) {
result = 1;
} else {
result = a.getAuthor().compareTo(b.getAuthor());
}
if(result !=0) {
return result;
}
if(a.getTitle() == null) {
if(b.getTitle() != null) {
result = -1;
}
} else if(b.getTitle() == null) {
result = 1;
} else {
result = a.getTitle().compareTo(b.getTitle());
}
if(result !=0) {
return result;
}
if(a.getYear() < b.getYear()){
return -1;
} else if (a.getYear() == b.getYear()){
return 0;
} else {
return 1;
}
}
}