Я пытаюсь создать код для сортировки данных для моего списка в следующем порядке и знаю, что мне нужно использовать компаратор, однако я понятия не имею, как реализовать следующую логику в компараторе. Некоторая помощь или примеры будут великолепны! Я хотел бы услышать от вас.
final private ArrayList<BookItem> books = new ArrayList<>();
Collections.sort(books, compareBooks);
Как я хочу, чтобы список был отсортирован следующим образом
Отобразить заказ
private Comparator<BookItem> compareBooks = (o1, o2) -> {
if (o1.sort_order == BookItem.ORDER && o2.sort_order != BookItem.ORDER) {
return -1;
} else if (o1.start_date != BookItem.START && o2.start_date == BookItem.START) {
return 1;
} else if (o1.ID == BookItem.ID && o2.ID == BookItem.ID) {
return 0
}
};
Я бы сделал это шаг за шагом, как в вашем списке атрибутов сортировки
private Comparator<BookItem> compareBooks = (o1, o2) -> {
int result =o1.sort_order - o2.sort_order
if(0==result){
result=o1.start_date.compareTo(o2.start_date);
}
if(0==result){
result=o1.ID-o2.ID;
}
};
Скорее всего, я испортил порядок хотя бы одного из ваших атрибутов, но идея должна быть ясной.