Невозможно отсортировать данные с Comparator в Android

1

Я пытаюсь создать код для сортировки данных для моего списка в следующем порядке и знаю, что мне нужно использовать компаратор, однако я понятия не имею, как реализовать следующую логику в компараторе. Некоторая помощь или примеры будут великолепны! Я хотел бы услышать от вас.

final private ArrayList<BookItem> books = new ArrayList<>();

Collections.sort(books, compareBooks);

Как я хочу, чтобы список был отсортирован следующим образом

Отобразить заказ

  1. Чем ниже номер sort_order, элемент будет отображаться.
  2. чем больше дата начала, тем выше будет отображаться элемент
  3. Чем больше значение идентификатора, тем будет
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
    } 
};
Теги:
algorithm
sorting
comparator

1 ответ

0

Я бы сделал это шаг за шагом, как в вашем списке атрибутов сортировки

  1. Чем ниже номер sort_order, элемент будет отображаться.
  2. чем больше дата начала, тем выше будет отображаться элемент
  3. Чем больше значение идентификатора, тем будет

 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;
    }
 };

Скорее всего, я испортил порядок хотя бы одного из ваших атрибутов, но идея должна быть ясной.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню