无法使用Android中的Comparator对数据进行排序

问题描述 投票:1回答:1

我正在尝试按以下顺序编写代码来为我的列表排序数据并知道我必须使用比较器,但是我不知道如何在比较器中实现以下逻辑。一些帮助或示例将是伟大的!我很乐意听到你的消息。

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

Collections.sort(books, compareBooks);

我希望列表的排序方式如下

显示顺序

  1. sort_order编号越低,该项目将显示为更新
  2. start_date的日期,项目将显示得越高
  3. ID值越大,项目就越大
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
    } 
};
android algorithm sorting comparator
1个回答
0
投票

我会像你的排序属性列表一样一步一步地做

  1. sort_order编号越低,该项目将显示为更新
  2. start_date的日期,项目将显示得越高
  3. ID值越大,项目就越大

一个

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

我很可能搞砸了你的至少一个属性的顺序,但这个想法应该是明确的。

© www.soinside.com 2019 - 2024. All rights reserved.